Diije

Supprimer totalement les tags

WordPress propose l’utilisation de tags pour offrir un deuxième moyen de catégoriser les articles. Je ne reviendrai pas ici sur les différentes raisons (notamment la duplication de contenu) qui poussent de nombreux webmasters adeptes du SEO à ne pas les utiliser et/ou en empêcher l’indexation par les moteurs de recherche. Je partage plutôt cet avis, et je trouve que, quitte à ne pas s’en servir, autant éviter de les voir :p

Je vais donc vous expliquer comment supprimer totalement les tags de votre blog WordPress.

Supprimer les tags de votre thème

Selon le thème que vous utilisez, la méthode pour supprimer l’affichage des tags est assez similaire, mais l’emplacement des lignes de codes à modifier peut être très différent. Je vous conseille d’aller jeter un oeil dans les fichiers qui gèrent l’affichage de la page d’accueil, des archives, des catégories et des articles seuls. Généralement il vous suffira de retirer l’appel aux fonctions the_tags() ou get_the_tag_list() qui, comme leurs noms l’indiquent, permettent de récupérer (et d’afficher) la liste des tags.

Mais certains thèmes sont plus fourbes, et utilisent une fonction personnalisée pour l’affichage des metadonnées des articles. C’est le cas de l’ancien thème par défaut de WordPress, Twenty Ten. Il vous faudra alors aller modifier la fonction en question dans le fichier functions.php.

Retirer les tags de l’interface d’administration

Maintenant que les tags ne s’affichent plus pour les visiteurs de votre blog, la logique veut d’empêcher l’ajout de nouveaux tags via l’interface d’administration, en retirant la metabox correspondante sur la page d’ajout/édition d’article.
Pour cela, ajoutez le code suivant au fichier functions.php de votre thème :

/* suppression de la metabox des tags et des formats sur la page d'ajout/edition de posts */
function dfr_remove_tags_metabox() {
	remove_meta_box('tagsdiv-post_tag', 'post', 'side');
}
add_action('admin_menu', 'dfr_remove_tags_metabox');

Un petit mot sur les arguments à passer à la fonction <a href="http://codex.wordpress.org/Function_Reference/remove_meta_box">remove_meta_box()</a> :

  • Le premier est l’id HTML du bloc à retirer de l’interface d’administration.
  • Le second désigne le type de page sur lequel on veut retirer le bloc (post, page, link ou un type personnalisé).
  • Le dernier désigne le contexte, c’est à dire l’endroit où se trouve la metabox dans la page : advanced ou normal pour les metaboxes placées sur la colonne centrale de la page, et side pour celles placées sur le côté.

Nous allons maintenant supprimer la colonne « Mots-clefs » de la liste des articles. Placez également ce code dans functions.php :

/* suppression de la colonne "Mots-clefs" sur la liste des articles */
function dfr_remove_tags_column($defaults) {
    unset($defaults['tags']);
    return $defaults;
}
add_filter( 'manage_posts_columns', 'dfr_remove_tags_column');

On indique tout simplement à WordPress de retirer la colonne « tags » des colonnes affichées par défaut.

Enfin, il nous faut maintenant retirer la page « Mots-clefs » du menu d’administration. Voilà encore un petit bout de code à placer dans functions.php :

/* suppression du menu "Mots-clefs" */
function dfr_remove_tags_menu() {
	global $submenu;
	unset($submenu['edit.php'][16]);
}
add_action('admin_head', 'dfr_remove_tags_menu');

Comme vous pouvez le constater, le menu de l’interface d’administration de WordPress est géré sous forme de tableau à double entrée, la première correspondant au menu (ici edit.php, c’est à dire le menu « Articles »), et la seconde est une valeur numérique correspondant à l’ID utilisé pour notre page (ici 16 pour « Mots-clefs »). Pour trouver l’ID correspondant à la page à cacher, il vous faudra parfois tâtonner, mais les ID sont normalement des multiples de 5.

Nettoyer la base de données

Maintenant que nous n’affichons plus les tags, et qu’il n’est plus possible d’en ajouter de nouveaux, mieux vaut faire un peu le ménage dans la base de données. Exécutez la requête suivante via votre interface d’administration de MySQL (phpmyadmin la plupart du temps) :

DELETE a,b,c
FROM prefix_terms AS a
LEFT JOIN prefix_term_taxonomy AS c ON a.term_id = c.term_id
LEFT JOIN prefix_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE c.taxonomy = 'post_tag'

Veillez à remplacer prefix par votre préfixe de tables (par défaut wp) pour que la requête fonctionne.

Voilà, vous êtes définitivement débarrassés des tags.