Personalizza ed estendi il miglior plug-in Sitemaps XML di Google WordPress

In questo tutorial vedremo come installare e configurare un plugin molto utile per aggiungere più sitemap XML al nostro sito web alimentato da WordPress: Better WordPress Google XML Sitemaps.

Impareremo anche come estenderlo facilmente scrivendo un plug-in personalizzato per escludere vari elementi dalle sitemap e scriveremo anche un modulo aggiuntivo per aggiungere una nuova sitemap personalizzata.


introduzione

Una sitemap è uno strumento potente che consente a un webmaster di fornire informazioni dettagliate sulla struttura di un sito al fine di facilitare la scansione delle pagine da parte dei motori di ricerca.

Nella sua forma più semplice, una sitemap è un file XML che elenca gli URL per un sito insieme ai metadati aggiuntivi su ciascun URL (quando è stato aggiornato l'ultima volta, con quale frequenza di solito cambia e quanto è importante, rispetto ad altri URL nel sito ) in modo che i motori di ricerca possano effettuare una scansione più intelligente del sito. (Fonte)

Prima di iniziare, vorrei fare un breve chiarimento: non sono lo sviluppatore di questo plugin, l'ho usato solo in un recente progetto su cui ho lavorato. Poiché l'ho trovato molto utile, ho deciso di scrivere un tutorial sull'estensione. Se hai domande dettagliate sulle sue funzionalità, non esitare a contattare direttamente l'autore del plugin.


Passaggio 1 Installa e configura un plug-in Sitemaps Google XML Google WordPress migliore

La caratteristica principale di Better WordPress Google XML Sitemaps (BWP GXS) è che crea un indice Sitemap e diverse sitemap per ogni sezione del tuo blog: post (in questo caso puoi anche dividere le sitemap di grandi dimensioni in più piccole), pagine, post personalizzati, categorie, tag, tassonomie personalizzate, data e archivi autore, una sitemap per Google News, pagine esterne e così via ... puoi personalizzare tutti questi comportamenti e attivare le varie sezioni nella pagina Impostazioni del plugin.

Inoltre, questo plugin aggiunge un collegamento all'indice Sitemap per robots.txt file del tuo sito.

Infine, può essere esteso in due modi diversi: attraverso le API Hooks e creando moduli personalizzati. Ad ogni modo, puoi trovare informazioni molto dettagliate sulle sue funzionalità nella pagina del plugin sul repository dei plugin di WordPress.

BWP GXS supporta anche installazioni multi-sito di WordPress.

Dopo l'installazione e l'attivazione, fare clic su Sitemap Generator collegamento sotto il BWP GXS menu. Qui puoi mettere a punto tutti gli aspetti del plugin: puoi impostare, ad esempio, il Frequenza di cambio predefinita delle sitemap, quante voci di elenco e così via ... La cosa interessante qui è che hai un buon controllo su tutte le sitemap attive: Post, Pagine, Tipi di post personalizzati, Categorie, Tag e Tassonomie personalizzate. Per questo tutorial, ho creato un Film Tipo di messaggio personalizzato e a Genere Tassonomia personalizzata, puoi vederli nello screenshot.

Ora, se apri http://yoursite.com/sitemapindex.xml (o http://yoursite.com/?bwpsitemap=sitemapindex se non utilizzi permalink) nel tuo browser, vedrai l'indice Sitemap con le sitemap attive: ogni link punta alla mappa del sito di una sezione specifica.

Tieni presente che questo è anche l'unico URL che devi impostare nell'account Strumenti per i Webmaster di Google del tuo sito web.

L'unica limitazione qui è che non è possibile escludi articoli specifici dalle rispettive sitemap.

Diciamo che vogliamo escludere:

  • cinque post dalla mappa del sito Messaggi (post.xml)
  • tre messaggi dal Film Sitemap messaggi personalizzati (post_movie.xml)
  • una pagina dalla sitemap di Pages (page.xml)
  • due categorie dalla Sitemap delle Categorie (taxonomy_category.xml)
  • un tag dalla sitemap Tags (taxonomy_post_tag.xml)
  • due elementi di tassonomia personalizzati dal Genere Mappa del sito (taxonomy_genre.xml)

Come possiamo farlo? Fortunatamente, il plugin può essere facilmente esteso grazie ai suoi hook, quindi possiamo scrivere un plugin dedicato.

Crea un nuovo file chiamato bwpgxs-extended-configuration.php, aprilo nel tuo editor di testo preferito e incollalo:

 

Copia il file nel tuo / Wp-content / plugins / directory e attivarlo su plugin pagina di amministrazione.


Passaggio 2 Escludi post e categorie dalle Sitemap

Come ho detto, è possibile estendere il plugin Better XML per Sitemaps di Google WordPress. Secondo la descrizione del plugin:

Nella versione 1.1.0 sono stati aggiunti altri hook ai moduli predefiniti per consentire una più facile personalizzazione delle query SQL utilizzate per costruire le tue sitemap ...
(Fonte)

Per essere più specifici, BWP GXS ci consente di escludere post, pagine e messaggi personalizzati tramite gli ID mentre ci consente di escludere le tassonomie tramite i loro slug.

Escludi manualmente gli articoli

Quindi, usiamo i ganci BWP GXS nel nostro Configurazione estesa di GWS BWP plugin, in particolare: bwp_gxs_post_where e bwp_gxs_term_exclude, come spiegato nella pagina di descrizione di GXS BWP (per maggiori dettagli sugli hook di WordPress puoi leggere il Informazioni su Hook di WordPress paragrafo in un precedente articolo che ho scritto per Wptuts +).

Aggiungi queste linee al nostro Configurazione estesa di GWS BWP collegare:

 // ESCLUDE POSTI, PAGINE, POSTI PERSONALIZZATI add_filter ('bwp_gxs_post_where', 'my_bwp_gxs_exclude_posts', 10, 2); // EXCLUDE TAXONOMIES add_filter ('bwp_gxs_term_exclude', 'my_bwp_gxs_exclude_terms', 10, 2); function my_bwp_gxs_exclude_posts ($ query_where_part, $ post_type) switch ($ post_type) case 'post': return 'AND wposts.ID NOT IN (1, 2, 3, 4, 5)'; rompere; case 'movie': return 'AND wposts.ID NOT IN (7, 8, 9)'; rompere; case 'page': return 'AND wposts.ID NOT IN (6)'; rompere;  return "; function my_bwp_gxs_exclude_terms ($ excluded, $ taxonomy) switch ($ taxonomy) case 'category': restituisce array ('cat-slug1', 'cat-slug2'); break; case 'post_tag': return array ('tag-slug1'); break; case 'genre': return array ('genre-slug1', 'genre-slug2'); break; return array ("); 

In questo modo escluderemo:

  • Messaggi con ID: 1, 2, 3, 4, 5
  • Una pagina con ID: 6
  • Film Messaggi personalizzati con ID: 7, 8, 9
  • Categorie con lumaca: cat-slug1 e cat-slug2
  • Un tag con slug: tag-slug1
  • Genere Tassonomia personalizzata, articoli con lumaca: genere-slug1 e genere-slug2

Escludi gli oggetti dinamicamente

Tuttavia questa soluzione non è facile da mantenere: ogni volta che vuoi escludere un nuovo articolo devi modificare manualmente il file Configurazione estesa di GWS BWP plug-in core file. Sarebbe meglio avere una pagina Impostazioni dedicata in cui è possibile impostare gli elementi da escludere. Per fare ciò, possiamo dire al nostro plugin di aggiungere un pannello delle impostazioni personalizzato nel menu GXS di BWP.

Aggiungi queste linee al plugin:

  

Escludi elementi da Sitemap XML

Post ID
(separato da virgola)
ID film
(separato da virgola)
ID delle pagine
(separato da virgola)
Slug di categoria
(separato da virgola)
Tag Slugs
(separato da virgola)
Slug di genere
(separato da virgola)

Salvare le modifiche e ora si avrà un nuovo collegamento nel menu Plugin GXS BWP: il Escludi articoli pagina in cui è possibile escludere tutti gli elementi desiderati:

Ora è il momento di modificare il my_bwp_gxs_exclude_terms e my_bwp_gxs_exclude_posts funzioni per supportare le nostre opzioni personalizzate e farle funzionare dinamicamente:

 // CATEGORIE, TAGS E TAXONOMIA PERSONALIZZATA 'GENRE' function my_bwp_gxs_exclude_terms ($ excluded, $ taxonomy) $ options = get_option ('my_bwp'); switch ($ taxonomy) case 'category': if ($ options ['bwp_exclude_categories']) return explode (',', $ options ['bwp_exclude_categories']);  rompere; caso 'post_tag': if ($ options ['bwp_exclude_post_tags']) return explode (',', $ options ['bwp_exclude_post_tags']);  rompere; case 'genere': if ($ options ['bwp_exclude_genre']) return explode (',', $ options ['bwp_exclude_genre']);  rompere;  return array ("); // POSTS AND CUSTOM POST TYPE Funzione" MOVIE "my_bwp_gxs_exclude_posts ($ query_where_part, $ post_type) $ options = get_option ('my_bwp'); opzione ($ post_type) caso 'post': if ($ options ['bwp_exclude_posts']) return 'AND wposts.ID NOT IN ('. $ options ['bwp_exclude_posts']. ')'; break; case 'movie': if ($ options ['bwp_exclude_movies'] ) return 'AND wposts.ID NOT IN ('. $ options ['bwp_exclude_movies']. ')'; break; case 'page': if ($ options ['bwp_exclude_pages']) return 'AND wposts.ID NOT IN ('. $ Options [' bwp_exclude_pages '].') '; Break; return "; 

Passaggio 3 Aggiungi una Sitemap XML personalizzata

BWP GXS può anche essere esteso con ulteriori moduli creare sitemap XML personalizzate. Ciò significa che è possibile aggiungere una sitemap per una sezione specifica del proprio sito Web che non fa parte del sistema di WordPress, forse perché non è integrata in WordPress a livello di database poiché utilizza tabelle di database diverse da quelle predefinite di WordPress. Una cosa grandiosa è che, attraverso i moduli, puoi sfruttare il database del plugin, le funzionalità GZip e Caching.

Facciamo un esempio: ho una galleria fotografica che usa le sue tabelle del database e queste tabelle non sono accessibili direttamente dalle funzioni interne di WordPress come get_posts (), o simili. Quindi, per accedere ai dati, è necessario effettuare una query diretta su una tabella specifica. Sebbene l'intera sezione della galleria fotografica sia esterno a WordPress, possiamo creare una sitemap XML degli album fotografici che saranno collegati da BWP GXS nell'indice Sitemap. In questo esempio, per semplicità, creerò una sitemap solo per gli album e non per tutte le singole foto.

Dettagli tecnici della galleria fotografica

Gli album della galleria fotografica sono memorizzati in a Galleria fotografica tavolo:

 CREATE TABLE 'photo_gallery' ('album_ID' int (4) NOT NULL AUTO_INCREMENT, 'album_name' varchar (255) NOT NULL DEFAULT ", 'album_nicename' varchar (255) NOT NULL DEFAULT", 'album_date' datetime NOT NULL DEFAULT '0000 -00-00 00:00:00 ',' album_status 'enum (' published ',' draft ',' private ') NOT NULL DEFAULT' bozza ', PRIMARY KEY (' album_ID '), UNIQUE KEY' album_nicename '(' ' album_nicename '));

Invece, le singole foto sono archiviate in un'altra tabella, ma come detto, non aggiungeremo gli URL delle foto alla sitemap, ma solo gli URL degli album. Ogni album ha un URL come questo:
http://yoursite.com/photo/album-nicename

E a tutti verrà aggiunta la nuova sitemap XML della galleria fotografica.

Si raccomanda inoltre vivamente - al fine di creare voci di Sitemap valide - di avere a datetime> tipo di campo nella tabella.

La caratteristica dei moduli GXS BWP

Nel Sitemap Generator pagina di amministrazione, c'è un Opzioni del modulo sezione. Nel Directory del modulo alternativo campo devi impostare il percorso completo alla directory che conterrà il modulo sitemap della galleria fotografica.

Ad esempio è possibile creare un GXS-moduli directory in wp-content dove devi mettere lo script PHP del modulo. Ogni sitemap personalizzata infatti ha bisogno del proprio modulo: un modulo GXS BWP è semplice .php file che contiene una classe che estende il BWP_GXS_MODULE classe fornita da BWP GXS.

In questa pagina puoi anche impostare il numero di elementi da visualizzare nella mappa del sito attraverso il Ottieni non più di campo.

Scrivere il modulo della galleria fotografica

Crea un nuovo file chiamato photo_gallery.php. Aprilo nel tuo editor di testo preferito e incollalo:

 set_current_time (); $ This-> build_data ();  function build_data () global $ wpdb, $ bwp_gxs; / * QUERY TO GET ALBUMS - LA TABELLA È NELLO STESSO WORDPRESS DB, QUINDI PUOI USARE QUI LA CLASSE WORDPRESS wpdb PER INTERAGIRE CON IL DATABASE * / $ albums = $ wpdb-> get_results ("SELECT nomealbum, data_album FROM photo_gallery ORDINA DA album_date DESC "); / * SE LA TABELLA È IN UN ALTRO DATABASE, PUOI USARE FUNZIONI PHP MYSQL * / if (! Isset ($ albums) || 0 == sizeof ($ albums)) restituisce false; $ data = array (); per ($ i = 0; $ i < sizeof( $albums ); $i++ )  $album = $albums[$i]; $data = $this->init_data ($ data); // SOSTITUI QUESTO CON URL CORRETTO AI TUO ALBUM // ESPECIALMENTE IL TUO URL DEL SITO WEB $ data ['location'] = 'http://yoursite.com/photo/'. $ Album-> album_nicename; $ data ['lastmod'] = $ this-> format_lastmod (strtotime ($ album-> album_date)); $ data ['freq'] = "settimanale"; $ data ['priority'] = 1; $ this-> data [] = $ data;  return true; ?>

Due cose molto importanti:

  1. Nel $ data [ 'location'] linea che devi sostituire http://yoursite.com con l'URL del tuo sito web, altrimenti il ​​modulo genererà un errore di sitemap vuoto;
  2. Valori ammessi per $ data [ 'freq'] siamo: sempre, ogni ora, quotidiano, settimanalmente, mensile, annuale, mai;

Finalmente salvalo nel tuo wp-content / GXS-moduli elenco.

Attivazione del modulo Photo Gallery

Ora è il momento di dire a BWP GXS di caricare il nostro modulo. Torna al tuo Configurazione estesa di GWS BWP plugin e aggiungi queste linee al bwpgxs-extended-configuration.php file:

 add_action ('bwp_gxs_modules_built', 'my_bwp_gxs_add_modules'); function my_bwp_gxs_add_modules () global $ bwp_gxs; $ bwp_gxs-> add_module ('photo_gallery'); 

Se stai usando dei permalink piuttosto carini, puoi anche avere un bel URL per la pagina Sitemap di Photo Gallery, qualcosa di simile http://yoursite.com/photo_gallery.xml.

Aggiungi anche queste linee, salva, e non dimenticare di aggiornare le impostazioni Permalink:

 add_filter ('bwp_gxs_rewrite_rules', 'my_bwp_gxs_add_rewrite_rules'); function my_bwp_gxs_add_rewrite_rules () $ my_rules = array ('photo_gallery.xml' => 'index.php? gxs_module = photo_gallery'); restituire $ my_rules; 

Il risultato finale sarà questo (nota la nuova sitemap personalizzata photo_gallery.xml):

Se si fa clic sul photo_gallery.xml link, vedrai la Sitemap XML di Photo Gallery che contiene tutti i link alle tue gallerie fotografiche:


In conclusione

Better WordPress Google XML Sitemaps è un plugin molto utile. Ha molte funzionalità che non abbiamo il tempo di parlare qui in modo più approfondito, ma puoi scoprirle tutte una volta che l'hai installata. È estremamente configurabile ed estensibile, come abbiamo visto, e ti consente di avere pieno supporto delle sitemap sul tuo sito web.

Decisamente un ottimo strumento per migliorare la visibilità del tuo sito sui motori di ricerca.


Riferimenti

  • Better WordPress Google XML Sitemaps sul repository ufficiale dei plugin di WordPress
  • Migliore documentazione su Sitemap XML XML di WordPress
  • Ganci e filtri WordPress: API plugin WordPress, informazioni su WordPress Hooks in Aggiungi una colonna personalizzata nei messaggi e nella schermata di amministrazione dei tipi di post personalizzati
  • Tipi di post personalizzati WordPress
  • Gestione delle opzioni di plugin in WordPress 2.8 con register_setting ()
  • Guida di Strumenti per i Webmaster di Google, Creazione di Sitemap, Definizioni di tag Sitemap