Personnaliser et étendre le meilleur plugin WordPress Google XML Sitemaps

Dans ce tutoriel, nous verrons comment installer et configurer un plugin très utile pour ajouter plusieurs sitemaps XML à notre site Web utilisant WordPress: Better WordPress Google XML Sitemaps.

Nous allons également apprendre à l'étendre facilement en écrivant un plug-in personnalisé pour exclure divers éléments des sitemaps et un autre module pour ajouter un nouveau sitemap personnalisé..


introduction

Un sitemap est un outil puissant qui permet au webmaster de fournir des informations détaillées sur la structure d'un site afin de faciliter l'exploration de pages par les moteurs de recherche..

Dans sa forme la plus simple, un sitemap est un fichier XML qui répertorie les URL d'un site ainsi que des métadonnées supplémentaires sur chaque URL (date de sa dernière mise à jour, fréquence à laquelle il change et importance, par rapport aux autres URL du site. ) afin que les moteurs de recherche puissent explorer plus intelligemment le site. (La source)

Avant de commencer, permettez-moi de clarifier un peu: je ne suis pas le développeur de ce plugin, je ne l'ai utilisé que dans un projet récent sur lequel j'ai travaillé. Comme je l’ai trouvé très utile, j’ai décidé de rédiger un tutoriel sur son extension. Si vous avez des questions détaillées sur ses fonctionnalités, n'hésitez pas à contacter directement l'auteur du plugin.


Étape 1: installez et configurez un meilleur plugin pour sitemaps XML pour Google WordPress

La fonctionnalité principale de Better WordPress Google Sitemaps XML (BWP GXS) est qu’elle crée un index de sitemap. et sitemaps différents pour chaque section de votre blog: Posts (dans ce cas, vous pouvez également diviser de grands sitemaps en plusieurs plus petits), Pages, Posts personnalisés, Catégories, Balises, Taxonomies personnalisées, Archives de la date et de l'auteur, Plan du site Google Actualités, Pages externes. et ainsi de suite… vous pouvez personnaliser tous ces comportements et activer les différentes sections de la page Paramètres du plugin.

De plus, ce plugin ajoute un lien vers l’index du sitemap vers le robots.txt fichier de votre site.

Enfin, il peut être étendu de deux manières différentes: via ses API Hooks et en créant des modules personnalisés. Quoi qu'il en soit, vous pouvez trouver des informations très détaillées sur ses fonctionnalités dans la page du plugin sur le référentiel de plugins WordPress.

BWP GXS prend également en charge les installations multi-sites de WordPress.

Après l’installation et l’activation, cliquez sur le bouton Générateur de sitemap lien sous le BWP GXS menu. Ici, vous pouvez régler tous les aspects du plug-in: vous pouvez définir, par exemple, la Fréquence de changement par défaut des sitemaps, combien d'éléments de liste, etc.… Ce qui est intéressant, c'est que vous avez un bon contrôle sur tous les sitemaps actifs: messages, pages, types de messages personnalisés, catégories, balises et taxonomies personnalisées. Pour ce tutoriel, j'ai créé un Film Type de message personnalisé et un Genre Taxonomie personnalisée, vous pouvez les voir dans la capture d'écran.

Maintenant, si vous ouvrez http://votresite.com/sitemapindex.xml (ou http://votresite.com/?bwpsitemap=sitemapindex Si vous n'utilisez pas de liens permanents) dans votre navigateur, vous verrez l'index du sitemap avec les sitemaps actifs: chaque lien pointe vers le sitemap d'une section spécifique..

Notez qu'il s'agit également de la seule URL à définir dans le compte Google Webmaster Tools de votre site Web..

La seule limite ici est qu’il n’est pas possible de exclure des éléments spécifiques des sitemaps respectifs.

Disons que nous voulons exclure:

  • cinq posts de sitemap Posts (post.xml)
  • trois postes de la Film Messages personnalisés Plan du site (post_movie.xml)
  • une page de sitemap Pages (page.xml)
  • deux catégories du plan du site Categories (taxonomy_category.xml)
  • une balise du plan du site Tags (taxonomy_post_tag.xml)
  • deux éléments de taxonomie personnalisés de la Genre plan du site (taxonomy_genre.xml)

Comment peut-on le faire? Heureusement, le plugin peut être facilement étendu grâce à ses hooks, nous pouvons donc écrire un plugin dédié.

Créez un nouveau fichier appelé bwpgxs-extended-configuration.php, ouvrez-le dans votre éditeur de texte préféré et collez-le:

 

Copiez le fichier dans votre / wp-content / plugins / répertoire et activez-le sur le Plugins page d'administration.


Étape 2: exclure les publications et les catégories des plans Sitemap

Comme je l'ai dit, il est possible d'étendre le plug-in Sitemap de XML pour Google WordPress. Selon la description du plugin:

Dans la version 1.1.0, davantage de points d'ancrage ont été ajoutés aux modules par défaut pour permettre une personnalisation plus aisée des requêtes SQL utilisées pour créer vos sitemaps…
(La source)

Pour être plus précis, BWP GXS nous permet d’exclure des publications, des pages et des publications personnalisées à travers les identifiants, tout en nous permettant d’exclure des taxonomies à travers leurs slugs..

Exclure les éléments manuellement

Alors, utilisons les crochets BWP GXS dans notre Configuration étendue BWP GXS plugin, en particulier: bwp_gxs_post_where et bwp_gxs_term_exclude, comme expliqué dans la page de description de BWP GXS (pour plus de détails sur les points d'ancrage de WordPress, vous pouvez lire le À propos des crochets WordPress paragraphe dans un article précédent que j'ai écrit pour Wptuts +).

Ajoutez ces lignes à notre Configuration étendue BWP GXS brancher:

 // EXCLURE POSTS, PAGES, POSTES PERSONNALISÉS 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 'ET wposts.ID NOT IN (1, 2, 3, 4, 5)'; Pause; case 'movie': retourne 'AND wposts.ID NOT IN (7, 8, 9)'; Pause; case 'page': retourne 'AND wposts.ID NOT IN (6)'; Pause;  return "; function my_bwp_gxs_exclude_terms ($ excluded, $ taxonomy) switch ($ taxonomy) case 'category': return tableau ('cat-slug1', 'cat-slug2'); break; case 'post_tag': return array ('tag-slug1'); break; cas 'genre': retour array ('genre-slug1', 'genre-slug2'); break; return array ("); 

De cette façon, nous exclurons:

  • Messages avec ID: 1, 2, 3, 4, 5
  • Une page avec ID: 6
  • Film Messages personnalisés ayant un ID: 7, 8, 9
  • Catégories avec limace: chat-limace1 et chat-slug2
  • Un tag avec slug: tag-slug1
  • Genre Taxonomie personnalisée, articles avec slug: genre-slug1 et genre-slug2

Exclure les éléments dynamiquement

Cependant, cette solution n’est pas facile à maintenir: chaque fois que vous voulez exclure un nouvel élément, vous devez éditer manuellement le fichier. Configuration étendue BWP GXS fichier de base du plugin. Il serait préférable d’avoir une page Paramètres dédiée sur laquelle vous pouvez définir les éléments à exclure. Pour ce faire, nous pouvons demander à notre plugin d’ajouter un panneau de réglage personnalisé dans le menu BWP GXS.

Ajoutez ces lignes au plugin:

  

Exclure des éléments des sitemaps XML

ID de poste
(séparées par des virgules)
ID de film
(séparées par des virgules)
ID de page
(séparées par des virgules)
Catégorie Slugs
(séparées par des virgules)
Tag Slugs
(séparées par des virgules)
Genre limaces
(séparées par des virgules)

Enregistrez les modifications et vous aurez maintenant un nouveau lien dans le menu du plugin BWP GXS: Exclure des articles page où vous pouvez exclure tous les éléments de votre choix:

Maintenant il est temps de modifier le my_bwp_gxs_exclude_terms et my_bwp_gxs_exclude_posts fonctions permettant de prendre en charge nos options personnalisées et de les faire fonctionner de manière dynamique:

 // CATÉGORIES, ÉTIQUETTES ET TAXONOMIE PERSONNALISÉE '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']);  Pause; case 'post_tag': if ($ options ['bwp_exclude_post_tags']) return explode (',', $ options ['bwp_exclude_post_tags']);  Pause; case 'genre': if ($ options ['bwp_exclude_genre']) return explode (',', $ options ['bwp_exclude_genre']);  Pause;  return array ("); // POSTS ET TYPE DE POST PERSONNALISÉ 'MOVIE' fonction my_bwp_gxs_exclude_posts ($ query_where_part, $ post_type) $ options = get_option ('mon_bwp'); switch ($ post_type) case 'post': if ($ options ['bwp_exclude_posts']) return 'ET wposts.ID NOT IN ('. $ options ['bwp_exclude_posts']. ')' break case 'film': if ($ options ['bwp_exclude_movies'] ) return 'ET 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 "; 

Étape 3 Ajouter un plan Sitemap XML personnalisé

BWP GXS peut également être étendu avec des modules créer des sitemaps XML personnalisés. Cela signifie que vous pouvez ajouter un sitemap pour une section spécifique de votre site Web qui ne fait pas partie du système WordPress, peut-être parce qu'il n'est pas intégré à WordPress au niveau de la base de données car il utilise différentes tables de base de données à partir des tables par défaut de WordPress. Un grand avantage est que, grâce aux modules, vous pouvez tirer parti des fonctionnalités de la base de données du plug-in, de GZip et de la mise en cache..

Faisons un exemple: j'ai une galerie de photos qui utilise ses tables de base de données et ces tables ne sont pas accessibles directement par les fonctions internes de WordPress telles que get_posts (), ou similaire. Donc, pour accéder aux données, il est nécessaire d’interroger directement une table spécifique. Bien que toute la section galerie de photos soit externe Pour WordPress, nous pouvons créer un sitemap XML pour les albums photo qui seront liés par BWP GXS dans l'index du sitemap. Dans cet exemple, par souci de simplicité, je créerai un plan du site uniquement pour les albums et non pour toutes les photos individuelles..

Galerie de photos Détails techniques

Les albums de la galerie de photos sont stockés dans un galerie de photos table:

 CREATE TABLE 'photo_gallery' ('album_ID' int (4) NOT NULL AUTO_INCREMENT, 'nom_album' varchar (255) NOT NULL DEFAULT ", 'album_nicename' varchar (255) NOT NULL DEFAULT", 'album_date' datetime NON NULL DEFAULT ', -00-00 00:00:00 ',' album_status 'enum (' publié ',' brouillon ',' privé ') NOT NULL DEFAULT' brouillon ', PRIMARY KEY (' album_ID '), UNIQUE KEY' album_nicename '(' album_nicename '));

Au lieu de cela, les photos individuelles sont stockées dans une autre table, mais comme indiqué, nous n’ajouterons pas les URL des photos au plan du site, mais uniquement les URL des albums. Chaque album a une URL comme celle-ci:
http://votresite.com/photo/nom_album

Et tous seront ajoutés à la nouvelle galerie de photos XML sitemap.

Il est également fortement recommandé - afin de créer des entrées de sitemap valides - d’avoir un date / heure> type de champ dans la table.

La fonctionnalité des modules BWP GXS

dans le Générateur de sitemap page d'administration, il y a un Options du module section. dans le Répertoire du module alternatif Dans ce champ, vous devez définir le chemin d'accès complet au répertoire qui contiendra le module sitemap de la galerie de photos..

Par exemple, vous pouvez créer un gxs-modules répertoire dans wp-content où vous devez mettre le script PHP du module. En fait, chaque sitemap personnalisé a besoin de son propre module: un module BWP GXS est un simple .php fichier qui contient une classe qui étend la BWP_GXS_MODULE classe fournie par BWP GXS.

Dans cette page, vous pouvez également définir le nombre d'éléments à afficher dans le plan du site via N'obtenez pas plus que champ.

Écrire le module de galerie de photos

Créez un nouveau fichier appelé photo_gallery.php. Ouvrez-le dans votre éditeur de texte préféré et collez-le:

 set_current_time (); $ this-> build_data ();  function build_data () global $ wpdb, $ bwp_gxs; / * RECHERCHE POUR OBTENIR DES ALBUMS - LA TABLE EST DANS LA MÊME BASE WORDPESS, VOUS POUVEZ UTILISER ICI LA CLASSE WPDB WORDPESS POUR INTERAGER AVEC LA BASE DE DONNÉES * / $ albums = $ wpdb-> get_results ("SELECT album_nicename, album_date FROM photo_gallery ORDER BY album_date DESC "); / * SI LA TABLE EST DANS UNE AUTRE BASE DE DONNEES, VOUS POUVEZ UTILISER LES FONCTIONS PHP MYSQL * / if (! Isset ($ albums) || 0 == sizeof ($ albums)) return false; $ data = array (); pour ($ i = 0; $ i < sizeof( $albums ); $i++ )  $album = $albums[$i]; $data = $this->init_data ($ data); // REMPLACEZ CELUI AVEC L'URL CORRECTE DE VOS ALBUMS // NOTAMMENT L'URL DE VOTRE SITE WEB $ data ['location'] = 'http://votresite.com/photo/'. $ album-> album_nicename; $ data ['lastmod'] = $ this-> format_lastmod (strtotime ($ album-> album_date)); $ data ['freq'] = "hebdomadaire"; $ data ['priority'] = 1; $ this-> data [] = $ data;  return true; ?>

Deux choses très importantes:

  1. dans le $ data ['location'] ligne que vous devez remplacer http://votresite.com avec l'URL de votre site Web, sinon le module générera une erreur de sitemap vide;
  2. Valeurs autorisées pour $ data ['freq'] sont: toujours, toutes les heures, du quotidien, hebdomadaire, mensuel, annuel, jamais;

Enfin, enregistrez-le dans votre wp-content / gxs-modules annuaire.

Activer le module de galerie de photos

Il est maintenant temps de dire à BWP GXS de charger notre module. Retournez à votre Configuration étendue BWP GXS plugin et ajouter ces lignes à la bwpgxs-extended-configuration.php fichier:

 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'); 

Si vous utilisez de jolis permaliens, vous pouvez également avoir une jolie URL pour la page Plan du site de la galerie de photos, par exemple http://votresite.com/photo_gallery.xml.

Ajoutez également ces lignes, enregistrez et n'oubliez pas de mettre à jour vos paramètres de permalien:

 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'); return $ my_rules; 

Le résultat final sera ceci (notez le nouveau plan du site personnalisé photo_gallery.xml):

Si vous cliquez sur le photo_gallery.xml lien, vous verrez le plan Sitemap XML de la galerie de photos contenant tous les liens vers vos galeries de photos:


En conclusion

Mieux WordPress Google XML Sitemaps est un plugin très utile. Il comporte de nombreuses fonctionnalités dont nous n'avons pas le temps de parler plus en détail ici, mais vous pouvez toutes les découvrir une fois que vous l'avez installé. Comme nous l'avons vu, il est extrêmement configurable et extensible, et vous permet de gérer intégralement les sitemaps sur votre site Web..

Définitivement un très bon outil pour améliorer la visibilité de votre site sur les moteurs de recherche.


Références

  • Meilleurs plans Sitemap Google XML pour WordPress sur le référentiel de plugins officiel WordPress
  • Meilleure documentation WordPress Google XML Sitemaps
  • Filtres et crochets WordPress: API de plugin WordPress, à propos des crochets WordPress Ajouter une colonne personnalisée dans les écrans Postes et Post types personnalisés
  • Types de messages personnalisés WordPress
  • Gestion des options de plugins dans WordPress 2.8 avec register_setting ()
  • Aide des outils Google pour les webmasters, Création de plans Sitemap, Définitions de balises Sitemap