WordPress: creare una sitemap di Google senza usare plugin

WordPress: creare una sitemap di Google senza usare plugin

In questo tutorial vedremo come implementare una sitemap di Google per il nostro sito in WordPress senza usare plugin.

Cos'è una sitemap

Una sitemap di Google è un file XML che contiene un elenco di tutte le pagine di un sito web che si desidera far indicizzare dai motori di ricerca come Google. Questo file aiuta i motori di ricerca a comprendere la struttura del sito web e a individuare rapidamente le pagine più importanti.

La sitemap di Google può contenere informazioni aggiuntive su ogni pagina, come la data di ultima modifica, la frequenza di aggiornamento e la priorità. Questi dati consentono ai motori di ricerca di capire quali pagine sono più importanti e di aggiornarle più frequentemente.

Le sitemap sono particolarmente utili per i siti web con molte pagine, pagine dinamiche o siti web appena lanciati. Inoltre, le sitemap possono anche aiutare a individuare eventuali problemi tecnici del sito web, come link interrotti o errori di codice.

Una volta creata la sitemap di Google, è possibile inviarla al motore di ricerca tramite Google Search Console, un tool di monitoraggio gratuito offerto da Google per i webmaster. In questo modo, i motori di ricerca possono indicizzare tutte le pagine del sito web e renderle disponibili nei risultati di ricerca.

L'implementazione

Creiamo una nuova pagina statica nel backend di WordPress e assegnamogli un template di pagina personalizzato.

Questo template non dovrà contenere le invocazioni alle funzioni get_header() e get_footer() di WordPress perché andremo a creare una stringa XML di output che serviremo come text/xml usando la funzione header() di PHP.

La stringa verrà assemblata all'interno di un loop di WordPress in cui ad esempio possiamo includere i post e le pagine del sito, tranne ovviamente la pagina corrente che rappresenta la sitemap.

I dati che inseriremo sono il permalink del post e della pagina e la sua data di creazione (o modifica) usando il formato data Y-m-d.

<?php
    /* Template Name: Sitemap */

    header( 'Content-Type: text/xml' );
    global $post;
    $loop = new WP_Query([ 'post_type' => [ 'post', 'page' ], 'post__not_in' => [ $post->ID ], 'post_status' => 'publish', 'posts_per_page' => -1 ]);
    $xml = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
    $xml .= '  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";

    while( $loop->have_posts() ):
        $loop->the_post();
        $xml .= '    <url>' . "\n";
        $xml .= '      <loc>' . get_permalink( get_the_ID() ) . '</loc>' . "\n";
        $xml .= '      <lastmod>' . get_the_time( 'Y-m-d', get_the_ID() ) . '</lastmod>' . "\n";
        $xml .= '    </url>' . "\n";
    endwhile;
    wp_reset_postdata();

    $xml .= '  </urlset>';
    echo $xml;
    exit;
?>

Una volta inviato l'output al client, interrompiamo l'esecuzione del codice usando la funzione di PHP exit() in modo che il documento XML risulti malformato nell'eventualità che vi siano caratteri aggiuntivi (per esempio spazio bianco).

Torna su