Quand un site grandit pendant des années, la taxonomie commence à devenir un problème. Un problème silencieux, car il passe assez inaperçu pendant longtemps.
Au début, il ne se passe rien. Tu crées une nouvelle catégorie, tu ajoutes une étiquette, tu en testes une autre, tu changes l’angle éditorial… et tu continues à publier.
Mais, à mesure que le site grandit, un jour l’article part dans non classé. Un autre jour, tu oublies une étiquette qui lui allait parfaitement. Et le troisième, tu oublies si tu avais déjà créé telle étiquette, et pourquoi tu l’avais fait — ou pas.
Si tu veux faire les choses correctement, il arrive un moment où classer un article commence à prendre plus de temps que cela ne devrait. Parce qu’il y a trop de possibilités et que tu ne sais pas toujours, ou ne te souviens pas toujours, quand utiliser chacune d’elles.
C’est ce qui m’arrivait, et c’est pourquoi j’ai expliqué récemment comment j’ai recatégorisé et réétiqueté tout mon WordPress.
Je ne vais pas te répéter ici comment j’ai organisé mon site, sauf le strict nécessaire pour mieux comprendre ce système : trois grands piliers : Business, Technologie et Loisirs et de nombreuses sous-catégories de deuxième niveau dans chacune d’elles, en plus des étiquettes.
Au passage, si tu te perds un peu avec tout ça, voici un article où j’explique la différence entre étiquettes et catégories, et quand utiliser les unes ou les autres.
Índice de Contenidos del Artículo
- L’objectif : décider plus vite comment classer chaque article et ne pas se planter
- La solution : un écran dédié dans l’admin de WordPress
- À quoi cela sert vraiment
- Conclusion
- Questions fréquentes
- Qu’est-ce qu’une taxonomie dans WordPress ?
- À quoi sert une carte éditoriale de taxonomie WordPress ?
- Quelle est la différence entre catégories et étiquettes dans WordPress ?
- Que sont les étiquettes structurelles ?
- Que sont les étiquettes imbriquées ?
- Cette carte éditoriale change-t-elle la taxonomie de WordPress ?
- Vaut-il la peine de créer une carte éditoriale pour un petit site ?
- Mieux organiser les catégories et les étiquettes aide-t-il le SEO ?
L’objectif : décider plus vite comment classer chaque article et ne pas se planter
L’idée était de mettre en place un système qui me simplifie la vie au moment d’étiqueter un article. Quelque chose d’immédiat, avec peu de risques d’erreur ou d’oubli.
De plus, comme objectif secondaire, je voulais garder un certain contrôle sur le nombre de contenus créés dans chaque catégorie ou étiquette.
Une chose importante ici, c’est qu’avant de me mettre au travail sur la solution, j’ai défini deux types d’étiquettes :
- Structurelles : Ce sont celles qui n’appartiennent pas à une catégorie concrète, mais décrivent le format ou l’intention de l’article. Par exemple : Tutoriel, Critique, Recommandé, Économiser ou Confidentialité.
- Imbriquées : Celles-ci ont bien une catégorie naturelle. Par exemple, Google Analytics s’insère dans la sous-catégorie Analytics, Email dans Marketing, Chromebook dans Hardware, Consoles dans Jeux vidéo ou Bande dessinée européenne dans Bandes dessinées.
Cela facilitait beaucoup la visualisation, comme tu vas le voir maintenant.
La solution : un écran dédié dans l’admin de WordPress
J’aurais pu le monter dans une carte mentale, ce qui était ma première idée vu son côté visuel.
Ou dans Excel, pour la question des chiffres.
Mais dans les deux cas, la gestion et la maintenance auraient été manuelles, ce que je voulais éviter à tout prix.
La solution était donc de monter quelque chose dans WordPress.
Comment ai-je fait ?
En créant une page personnalisée dans l’administration de WordPress au moyen de code dans functions.php.

Cet écran fonctionne comme une petite carte éditoriale divisée en deux moitiés :
Dans la partie gauche apparaissent les catégories principales et leurs sous-catégories. Sous chacune, les étiquettes recommandées pour classer les articles de ce bloc sont affichées.
Dans la partie droite apparaissent les étiquettes, divisées en deux blocs mentionnés plus haut : structurelles et imbriquées.
J’ai aussi ajouté :
- Un moteur de recherche.
- Liens vers les archives et l’édition
- Compteurs d’articles par taxonomie.
On y accède depuis la section des articles :

Le code
Voici le code que j’ai ajouté dans functions.php, mais attention : tu dois l’adapter pour qu’il corresponde à tes catégories et étiquettes. Tu peux le faire toi-même ou l’expliquer à ChatGPT pour qu’il te le modifie :
/* =========================================================
* MAPA EDITORIAL DE TAXONOMÍAS
* Página interna para visualizar categorías y etiquetas
* ========================================================= */
add_action('admin_menu', 'yg_mapa_editorial_menu');
function yg_mapa_editorial_menu() {
add_submenu_page(
'edit.php',
'Mapa editorial',
'Mapa editorial',
'manage_categories',
'yg-mapa-editorial',
'yg_render_mapa_editorial'
);
}
/**
* Configuración editorial del mapa.
*/
function yg_mapa_editorial_config() {
return array(
'categorias_principales' => array(
'Negocio',
'Tecnología',
'Ocio',
),
// Categorías obsoletas o que no queremos mostrar en el mapa editorial.
'categorias_excluidas' => array(
'Diseño',
'Diseño gráfico',
'Diseño web',
'Ilustración',
'Usabilidad',
'Sin categoría',
),
// Etiquetas transversales: formato, enfoque o intención del contenido.
'etiquetas_estructurales' => array(
'Tutorial',
'Reseña',
'Recomendado',
'Ahorrar',
'Privacidad',
),
// Etiquetas temáticas/anidadas por pilar.
// Productividad queda como anidada de Negocio.
'etiquetas_anidadas' => array(
'Negocio' => array(
'Productividad',
'Google Analytics',
'CRO',
'SEO',
'Email',
'Acumbamail',
),
'Tecnología' => array(
'WordPress',
'Chromebook',
'Gmail',
'Trello',
'Video',
),
'Ocio' => array(
'Consolas',
'Retro',
'Cómic Americano',
'Cómic Europeo',
'Manga',
'Pérez-Reverte',
),
),
// Etiquetas recomendadas bajo cada categoría.
// La clave debe coincidir con el slug habitual de la categoría.
'etiquetas_por_categoria' => array(
// Negocio
'negocio' => array('Productividad', 'SEO', 'CRO', 'Email', 'Acumbamail', 'Google Analytics'),
'analitica' => array('Google Analytics', 'CRO', 'Tutorial'),
'casos-de-exito' => array('Productividad'),
'ecommerce' => array('CRO', 'Email', 'Acumbamail', 'Google Analytics', 'Tutorial'),
'inversion' => array('Ahorrar'),
'marketing' => array('Email', 'Acumbamail', 'SEO', 'CRO', 'Productividad'),
'negocios-online' => array('Productividad', 'SEO', 'CRO'),
// Tecnología
'tecnologia' => array('WordPress', 'Privacidad', 'Tutorial'),
'hardware' => array('Chromebook', 'Tutorial'),
'herramientas' => array('Trello', 'Gmail', 'WordPress', 'Tutorial'),
'inteligencia-artificial' => array('Video', 'Tutorial'),
'software' => array('WordPress', 'Gmail', 'Trello', 'Privacidad', 'Tutorial'),
// Ocio
'ocio' => array('Reseña', 'Recomendado'),
'comics' => array('Cómic Americano', 'Cómic Europeo', 'Manga', 'Reseña'),
'libros' => array('Pérez-Reverte', 'Reseña', 'Recomendado'),
'musica' => array('Video', 'Reseña'),
'peliculas' => array('Reseña', 'Recomendado'),
'series' => array('Reseña', 'Recomendado'),
'videojuegos' => array('Consolas', 'Retro', 'Reseña', 'Recomendado'),
),
);
}
/**
* Recupera término por nombre o slug.
*/
function yg_mapa_get_term_by_name_or_slug($name, $taxonomy) {
$term = get_term_by('name', $name, $taxonomy);
if (!$term) {
$term = get_term_by('slug', sanitize_title($name), $taxonomy);
}
if (!$term || is_wp_error($term)) {
return null;
}
return $term;
}
/**
* Comprueba si una categoría debe ocultarse.
*/
function yg_mapa_categoria_excluida($term, $config) {
if (!$term || is_wp_error($term)) {
return true;
}
return in_array($term->name, $config['categorias_excluidas'], true);
}
/**
* Render de una etiqueta como píldora compacta dentro de tarjetas de categoría.
*/
function yg_mapa_tag_pill($tag_name) {
$term = yg_mapa_get_term_by_name_or_slug($tag_name, 'post_tag');
if (!$term) {
return '<span class="yg-map-pill yg-map-pill--missing">' . esc_html($tag_name) . ' <small>no existe</small></span>';
}
$edit_link = get_edit_term_link($term->term_id, 'post_tag');
$archive_link = get_term_link($term);
$html = '<span class="yg-map-pill">';
$html .= '<strong>' . esc_html($term->name) . '</strong>';
$html .= '<em>' . intval($term->count) . '</em>';
if (!is_wp_error($archive_link)) {
$html .= '<a href="' . esc_url($archive_link) . '" target="_blank">ver</a>';
}
if ($edit_link) {
$html .= '<a href="' . esc_url($edit_link) . '">editar</a>';
}
$html .= '</span>';
return $html;
}
/**
* Render de tarjeta compacta de categoría.
*/
function yg_mapa_category_card($term, $config) {
if (!$term || is_wp_error($term)) {
return;
}
if (yg_mapa_categoria_excluida($term, $config)) {
return;
}
$archive_link = get_term_link($term);
$edit_link = get_edit_term_link($term->term_id, 'category');
$recommended_tags = array();
if (!empty($config['etiquetas_por_categoria'][$term->slug])) {
$recommended_tags = $config['etiquetas_por_categoria'][$term->slug];
}
echo '<article class="yg-map-card yg-map-card--category" data-map-search="' . esc_attr(strtolower($term->name)) . '">';
echo '<div class="yg-map-card__top">';
echo '<h3>' . esc_html($term->name) . '</h3>';
echo '<span class="yg-map-count">' . intval($term->count) . ' artículos</span>';
echo '</div>';
if (!empty($recommended_tags)) {
echo '<div class="yg-map-card__tags">';
echo '<span class="yg-map-label">Etiquetas recomendadas</span>';
echo '<div class="yg-map-pills">';
foreach ($recommended_tags as $tag_name) {
echo yg_mapa_tag_pill($tag_name);
}
echo '</div>';
echo '</div>';
}
echo '<div class="yg-map-card__actions">';
if (!is_wp_error($archive_link)) {
echo '<a href="' . esc_url($archive_link) . '" target="_blank">Ver archivo</a>';
}
if ($edit_link) {
echo '<a href="' . esc_url($edit_link) . '">Editar</a>';
}
echo '</div>';
echo '</article>';
}
/**
* Render de tarjeta compacta de etiqueta.
* No muestra ya las píldoras "Estructural" / "Anidada".
*/
function yg_mapa_tag_card($tag_name) {
$term = yg_mapa_get_term_by_name_or_slug($tag_name, 'post_tag');
if (!$term) {
echo '<article class="yg-map-card yg-map-card--tag yg-map-card--missing">';
echo '<div class="yg-map-card__top">';
echo '<h3>' . esc_html($tag_name) . '</h3>';
echo '<span class="yg-map-count">no existe</span>';
echo '</div>';
echo '</article>';
return;
}
$archive_link = get_term_link($term);
$edit_link = get_edit_term_link($term->term_id, 'post_tag');
echo '<article class="yg-map-card yg-map-card--tag" data-map-search="' . esc_attr(strtolower($term->name)) . '">';
echo '<div class="yg-map-card__top">';
echo '<h3>' . esc_html($term->name) . '</h3>';
echo '<span class="yg-map-count">' . intval($term->count) . ' artículos</span>';
echo '</div>';
echo '<div class="yg-map-card__actions">';
if (!is_wp_error($archive_link)) {
echo '<a href="' . esc_url($archive_link) . '" target="_blank">Ver archivo</a>';
}
if ($edit_link) {
echo '<a href="' . esc_url($edit_link) . '">Editar</a>';
}
echo '</div>';
echo '</article>';
}
/**
* Render principal.
*/
function yg_render_mapa_editorial() {
if (!current_user_can('manage_categories')) {
wp_die('No tienes permisos para ver esta página.');
}
$config = yg_mapa_editorial_config();
echo '<div class="wrap yg-map-wrap">';
echo '<h1>Mapa editorial</h1>';
echo '<p class="yg-map-intro">Consulta de forma rápida las categorías y etiquetas recomendadas para decidir cómo clasificar cada artículo.</p>';
echo '<input type="search" id="yg-map-search" class="yg-map-search" placeholder="Buscar categoría o etiqueta..." />';
echo '<div class="yg-map-layout">';
/* ======================
* CATEGORÍAS
* ====================== */
echo '<section class="yg-map-panel">';
echo '<div class="yg-map-panel__head">';
echo '<h2>Categorías</h2>';
echo '<p>Estructura principal de la web. Debajo de cada categoría se muestran sus etiquetas anidadas recomendadas.</p>';
echo '</div>';
foreach ($config['categorias_principales'] as $parent_name) {
$parent = yg_mapa_get_term_by_name_or_slug($parent_name, 'category');
if (!$parent || yg_mapa_categoria_excluida($parent, $config)) {
continue;
}
echo '<div class="yg-map-category-group">';
echo '<h2 class="yg-map-group-title">' . esc_html($parent->name) . '</h2>';
yg_mapa_category_card($parent, $config);
$children = get_categories(array(
'taxonomy' => 'category',
'hide_empty' => false,
'parent' => $parent->term_id,
'orderby' => 'name',
'order' => 'ASC',
));
if (!empty($children)) {
echo '<div class="yg-map-child-grid">';
foreach ($children as $child) {
yg_mapa_category_card($child, $config);
}
echo '</div>';
}
echo '</div>';
}
echo '</section>';
/* ======================
* ETIQUETAS
* ====================== */
echo '<section class="yg-map-panel">';
echo '<div class="yg-map-panel__head">';
echo '<h2>Etiquetas</h2>';
echo '<p>Separación editorial entre etiquetas estructurales y etiquetas anidadas por pilar.</p>';
echo '</div>';
// Estructurales
echo '<div class="yg-map-tag-block">';
echo '<h2 class="yg-map-group-title">Estructurales</h2>';
echo '<p class="yg-map-help">Transversales: formato, intención o enfoque. Se pueden usar en artículos de distintas categorías.</p>';
echo '<div class="yg-map-tag-grid">';
foreach ($config['etiquetas_estructurales'] as $tag_name) {
yg_mapa_tag_card($tag_name);
}
echo '</div>';
echo '</div>';
// Anidadas
echo '<div class="yg-map-tag-block">';
echo '<h2 class="yg-map-group-title">Anidadas</h2>';
echo '<p class="yg-map-help">Temáticas: deben usarse principalmente dentro de su pilar o categoría natural.</p>';
foreach ($config['etiquetas_anidadas'] as $group_name => $tags) {
echo '<div class="yg-map-nested-group">';
echo '<h3>' . esc_html($group_name) . '</h3>';
echo '<div class="yg-map-tag-grid">';
foreach ($tags as $tag_name) {
yg_mapa_tag_card($tag_name);
}
echo '</div>';
echo '</div>';
}
echo '</div>';
echo '</section>';
echo '</div>'; // layout
echo '</div>'; // wrap
yg_mapa_editorial_styles();
yg_mapa_editorial_scripts();
}
/**
* CSS interno para la pantalla.
*/
function yg_mapa_editorial_styles() {
?>
<style>
.yg-map-wrap {
max-width: 1320px;
}
.yg-map-intro {
margin: 4px 0 18px;
color: #555;
font-size: 14px;
}
.yg-map-search {
width: 100%;
max-width: 520px;
margin: 0 0 22px;
padding: 10px 12px;
border: 1px solid #ccd0d4;
border-radius: 6px;
background: #fff;
}
.yg-map-layout {
display: grid;
grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
gap: 22px;
align-items: start;
}
.yg-map-panel {
background: #fff;
border: 1px solid #dcdcde;
border-radius: 8px;
padding: 18px;
}
.yg-map-panel__head {
margin-bottom: 16px;
}
.yg-map-panel__head h2 {
margin: 0 0 4px;
font-size: 18px;
}
.yg-map-panel__head p,
.yg-map-help {
margin: 0;
color: #666;
font-size: 12px;
line-height: 1.45;
}
.yg-map-category-group,
.yg-map-tag-block {
margin-bottom: 22px;
}
.yg-map-category-group:last-child,
.yg-map-tag-block:last-child {
margin-bottom: 0;
}
.yg-map-group-title {
margin: 0 0 10px;
padding: 0 0 7px;
border-bottom: 1px solid #ececec;
font-size: 15px;
font-weight: 700;
color: #1d2327;
}
.yg-map-child-grid,
.yg-map-tag-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
gap: 10px;
}
.yg-map-nested-group {
margin-top: 16px;
}
.yg-map-nested-group h3 {
margin: 0 0 8px;
font-size: 14px;
color: #1d2327;
}
.yg-map-card {
background: #fdfdfd;
border: 1px solid #dcdcde;
border-radius: 8px;
padding: 10px;
min-height: auto;
}
.yg-map-card--missing {
opacity: .65;
border-style: dashed;
}
.yg-map-card__top {
display: flex;
gap: 8px;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 7px;
}
.yg-map-card h3 {
margin: 0;
font-size: 13px;
line-height: 1.25;
font-weight: 700;
color: #1d2327;
}
.yg-map-count {
flex: 0 0 auto;
display: inline-flex;
align-items: center;
white-space: nowrap;
padding: 3px 7px;
border-radius: 999px;
background: #fff4ce;
color: #5f4500;
font-size: 11px;
font-weight: 600;
}
.yg-map-card__tags {
margin-top: 8px;
}
.yg-map-label {
display: block;
margin-bottom: 5px;
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: .02em;
color: #646970;
}
.yg-map-pills {
display: flex;
flex-wrap: wrap;
gap: 5px;
}
.yg-map-pill {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 4px 7px;
border-radius: 999px;
background: #f0f6fc;
border: 1px solid #c5d9ed;
font-size: 11px;
color: #1d2327;
}
.yg-map-pill em {
font-style: normal;
color: #646970;
}
.yg-map-pill a {
text-decoration: none;
}
.yg-map-pill--missing {
background: #fff7f7;
border-color: #f0b8b8;
color: #8a2424;
}
.yg-map-card__actions {
display: flex;
gap: 8px;
flex-wrap: wrap;
margin-top: 7px;
font-size: 11px;
}
.yg-map-card__actions a {
text-decoration: none;
}
@media (max-width: 1100px) {
.yg-map-layout {
grid-template-columns: 1fr;
}
}
</style>
<?php
}
/**
* JS interno para buscador rápido.
*/
function yg_mapa_editorial_scripts() {
?>
<script>
document.addEventListener('DOMContentLoaded', function () {
const input = document.getElementById('yg-map-search');
if (!input) return;
input.addEventListener('input', function () {
const query = this.value.toLowerCase().trim();
const cards = document.querySelectorAll('.yg-map-card');
cards.forEach(function (card) {
const text = card.textContent.toLowerCase();
card.style.display = text.includes(query) ? '' : 'none';
});
});
});
</script>
<?php
}
En plus, si tu veux, tu peux séparer le CSS dans le style.css, mais j’ai préféré garder tout le code ensemble.
À quoi cela sert vraiment
Cette carte éditoriale ne change pas la taxonomie de WordPress ; elle facilite sa façon de l’utiliser.
Avant, j’avais une liste de catégories et d’étiquettes selon un critère choisi à un moment donné. Maintenant, j’ai ce critère visible et sous la main, ce qui me permet de :
- Classer les articles plus vite tout en gardant une cohérence éditoriale.
- Éviter la création d’étiquettes dupliquées ou inutiles.
- Repérer les taxonomies avec peu d’articles.
- Faire évoluer correctement le site si je publie plus de contenus, ce qui est l’idée.
Conclusion
Organiser la taxonomie de WordPress ne consiste pas seulement à créer des catégories et des étiquettes, mais à avoir un système pour bien les utiliser.
Dans mon cas, arrivé à ce point, j’avais besoin d’une couche éditoriale par-dessus : un système simple qui me proposait les étiquettes utiles pour chaque type de contenu.
Si tu as un petit site, tu n’en as peut-être pas besoin, mais si tu publies depuis des années et que tu commences déjà à hésiter entre catégories, étiquettes, thèmes, formats et outils, créer une carte éditoriale ou un système éditorial peut t’épargner pas mal de chaos, présent et futur.
Ce n’est pas une grande révolution technique, mais c’est bien une amélioration pour gagner du temps et publier toujours avec le même critère.
Questions fréquentes
Qu’est-ce qu’une taxonomie dans WordPress ?
Une taxonomie dans WordPress est une façon d’organiser les contenus. Les plus courantes sont les catégories et les étiquettes, même si WordPress permet aussi de créer des taxonomies personnalisées. En pratique, elles servent à classer les articles et à rendre un site plus facile à parcourir et à maintenir.
À quoi sert une carte éditoriale de taxonomie WordPress ?
Elle sert à savoir clairement quelles catégories et étiquettes utiliser pour chaque article. Au lieu de décider de mémoire à chaque publication, tu as un écran interne où tu vois les catégories, les étiquettes recommandées et la fonction éditoriale de chaque terme.
Quelle est la différence entre catégories et étiquettes dans WordPress ?
Les catégories représentent généralement les grandes sections d’un site. Les étiquettes servent à relier des contenus par thème, format, outil, auteur, intention ou angle. Par exemple, une catégorie peut être “Technologie” et une étiquette “WordPress”, “Tutoriel” ou “Confidentialité”.
Que sont les étiquettes structurelles ?
Ce sont des étiquettes transversales qui peuvent s’appliquer à des articles de différentes catégories. Par exemple, “Tutoriel”, “Critique”, “Recommandé”, “Économiser” ou “Confidentialité”. Elles n’appartiennent pas à une seule section, mais décrivent le type de contenu ou son intention.
Que sont les étiquettes imbriquées ?
Ce sont des étiquettes qui ont une catégorie naturelle de référence. Par exemple, “Google Analytics” s’insère dans Analytics, “Email” dans Marketing, “Consoles” dans Jeux vidéo ou “Bande dessinée européenne” dans Bandes dessinées. Elles aident à maintenir une classification plus cohérente.
Cette carte éditoriale change-t-elle la taxonomie de WordPress ?
Pas nécessairement. La carte éditoriale n’a pas à modifier les catégories ni les étiquettes par elle-même. Sa fonction principale est de servir de guide visuel dans l’administration pour mieux décider comment classer chaque article.
Vaut-il la peine de créer une carte éditoriale pour un petit site ?
Si tu as peu d’articles, ce n’est probablement pas nécessaire. Cela commence à avoir du sens quand le site grandit, qu’il y a beaucoup de catégories ou d’étiquettes, que tu publies sur plusieurs sujets ou que tu dois maintenir un critère éditorial plus clair.
Mieux organiser les catégories et les étiquettes aide-t-il le SEO ?
Cela peut aider indirectement. Une taxonomie plus claire améliore la structure interne, évite les doublons, facilite le maillage et permet de créer des archives de catégories ou d’étiquettes plus utiles. L’important est de ne pas créer de termes sans intérêt ni de pages d’archive vides ou trop pauvres.

Laisser un commentaire