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 remove_meta_box() :

  • 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.

Cet article a été publié dans WordPress par . Mettez-le en favori avec son permalien.
  • A défaut de ne pas être utile pour l’archivage, voir nocifs pour le duplicate, ils sont tout de même utile pour permettre l’association entre articles, et c’est la toute leur utilité.

    Dommage donc de ne pas en profiter non ? Bien entendu, avec un noindex sur les pages de tags.

  • Pour ma part, je vais déconseiller de totalement supprimer les mots clés. Il peuvent être très intéressant pour positionner un mot clé qui regroupe plusieurs articles, mais dont le site n’a pas encore de contenu spécifique dessus.

    Par exemple, un tag « recette à la fraise » pour un site de recette, ce qui va créer une page dédiée à la fraise sans pour autant avoir un article dédié. Le tout est de modifier le contenu affiché par rapport à une page de catégorie et surtout limiter le nombre de tags pour les différents articles.

  • @Djolhan & Daniel : chacun a son avis sur l’utilité ou non des tags.
    Il est certain qu’une catégorisation transversale est parfois utile, mais pas toujours. Ce hack est donc à n’appliquer que dans les cas où l’on le juge pertinent ;p

    Merci à vous deux pour vos commentaires.

  • Capek

    Je suis tous à fait d’accord. Je vois enfin quelqu’un avec le même avis que moi sur les tags de WordPress. Je ne remplis jamais les tags juste les catégories et je déconseille fortement de les utiliser. Ce n’est que mon avis bien sur 😀 Bravo pour l’article, je vais retirer les tags de l’interface d’administration 😉