Cuando una web crece durante años, la taxonomía empieza a convertirse en un problema. Uno silencioso, pues pasa bastante desapercibido mucho tiempo.
Al principio no ocurre nada. Creas una categoría nueva, añades una etiqueta, pruebas otra, cambias el enfoque editorial… y sigues publicando.
Pero, conforme la web crece, un día se te va el artículo a sin categoría. Otro te olvidas de una etiqueta que le venía al pelo. Y el tercero se te olvida si habías creado o no cierta etiqueta y los motivos por los que (sí/no) lo hiciste.
Si quieres hacerlo bien, llega un momento en el que clasificar un artículo empieza a ser más lento de lo que debería. Porque hay demasiadas posibilidades y no siempre tienes claro o recuerdas cuándo usar cada una.
Eso es lo que me estaba pasando y por eso te expliqué hace poco cómo recategoricé y reetiqueté todo mi WordPress.
No voy a entrar a repetirte aquí cómo tengo organizada mi web, salvo lo imprescindible para que entiendas mejor este sistema: tres grandes pilares: Negocio, Tecnología y Ocio y múltiples subcategorías de segundo nivel en cada una de ellas, además de etiquetas.
Por cierto, si te pierdes un poco con todo esto, aquí tienes un artículo en el que marco la diferencia entre etiquetas y categorías, y cuándo usar unas u otras.
Índice de Contenidos del Artículo
- El objetivo: decidir más rápido cómo clasificar cada artículo y no liarla
- La solución: una pantalla propia en el admin de WordPress
- Para qué sirve realmente
- Conclusión
- Preguntas frecuentes
- ¿Qué es una taxonomía en WordPress?
- ¿Para qué sirve un mapa editorial de taxonomía WordPress?
- ¿Cuál es la diferencia entre categorías y etiquetas en WordPress?
- ¿Qué son las etiquetas estructurales?
- ¿Qué son las etiquetas anidadas?
- ¿Este mapa editorial cambia la taxonomía de WordPress?
- ¿Merece la pena crear un mapa editorial en una web pequeña?
- ¿Ayuda al SEO organizar mejor las categorías y etiquetas?
El objetivo: decidir más rápido cómo clasificar cada artículo y no liarla
La idea era montar un sistema que me facilitara la vida a la hora de etiquetar un artículo. Que fuera algo inmediato y con baja posibilidad de error u omisión.
Además y como meta secundaria, quería tener cierto control sobre cuántos contenidos tenía credos bajo cada categoría o etiqueta.
Una cosa importante aquí es que antes de ponerme manos a la obra con la solución, definí dos tipos de etiquetas:
- Estructurales: Son las que no pertenecen a una categoría concreta, sino que describen el formato o la intención del artículo. Por ejemplo: Tutorial, Reseña, Recomendado, Ahorrar o Privacidad.
- Anidadas: Estas sí tienen una categoría natural. Por ejemplo, Google Analytics encaja dentro de la subcategoría Analítica, Email dentro de Marketing, Chromebook dentro de Hardware, Consolas dentro de Videojuegos o Cómic Europeo dentro de Cómics.
Esto facilitaba mucho la visualización, como ahora verás.
La solución: una pantalla propia en el admin de WordPress
Podría haberlo montado en un mapa mental, que era mi primera idea por lo visible que resulta.
O en un Excel, por el tema de las cifras.
Pero en ambos casos la gestión y mantenimiento iba a ser manual, cosa que quería evitar a a toda costa.
Así que la solución era montar algo dentro de WordPress.
¿Cómo lo hice?
Creando una página personalizada dentro del administrador de WordPress mediante código en functions.php.

Esa pantalla funciona como un pequeño mapa editorial dividido en dos mitades:
En la parte izquierda aparecen las categorías principales y sus subcategorías. Debajo de cada una se muestran las etiquetas recomendadas para clasificar artículos de ese bloque.
En la parte derecha aparecen las etiquetas, divididas en los dos bloques mencionados antes: estructurales y anidadas.
Además añadí:
- Un buscador.
- Enlaces a archivo y edición
- Contadores de artículos por taxonomía.
Se accede a ella desde la sección de entradas:

El código
Aquí te dejo el código que yo añadí en el functions.php, pero ojo que tienes que editarlo para encajarlo con tus categorías y etiquetas. Puedes hacerlo tú mismo o se lo cuentas a ChatGPT y que te lo modifique:
/* =========================================================
* 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
}
Además, si quieres puedes separar el CSS en el style.css, pero yo he preferido mantener todo el código junto.
Para qué sirve realmente
Este mapa editorial no cambia la taxonomía de WordPress sino que facilita la forma de usarla.
Antes tenía una lista de categorías y etiquetas bajo un criterio escogido en su momento. Ahora tengo dicho criterio visible y a mano, lo que me permite:
- Clasificar entradas más rápido manteniendo coherencia editorial.
- Evitar la creación de etiquetas duplicadas o innecesarias.
- Detectar taxonomías con pocos artículos.
- Escalar correctamente la web si publico más contenido, que es la idea.
Conclusión
Organizar la taxonomía de WordPress no va solo de crear categorías y etiquetas, sino de tener un sistema para usarlas bien.
En mi caso, llegado este punto, necesitaba una capa editorial encima: un sistema senciloa que me propusiera las etiquetas que tienen sentido en cada tipo de contenido.
Si tienes una web pequeña, quizá no lo necesites, pero si llevas años publicando y ya empiezas a dudar entre categorías, etiquetas, temas, formatos y herramientas, crear un mapa editorial o un sistema editorial te puede ahorrarte bastante caos, presente y futuro.
No es una gran revolución técnica, pero sí una mejora para ahorrar tiempo y publicar con siempre con el mismo criterio.
Preguntas frecuentes
¿Qué es una taxonomía en WordPress?
Una taxonomía en WordPress es una forma de organizar contenidos. Las más habituales son las categorías y las etiquetas, aunque WordPress también permite crear taxonomías personalizadas. En la práctica, sirven para clasificar entradas y ayudar a que una web sea más fácil de navegar y mantener.
¿Para qué sirve un mapa editorial de taxonomía WordPress?
Sirve para tener claro qué categorías y etiquetas usar en cada artículo. En vez de decidirlo de memoria cada vez que publicas, tienes una pantalla interna donde ves las categorías, las etiquetas recomendadas y la función editorial de cada término.
¿Cuál es la diferencia entre categorías y etiquetas en WordPress?
Las categorías suelen representar las grandes secciones de una web. Las etiquetas sirven para relacionar contenidos por tema, formato, herramienta, autor, intención o enfoque. Por ejemplo, una categoría puede ser “Tecnología” y una etiqueta puede ser “WordPress”, “Tutorial” o “Privacidad”.
¿Qué son las etiquetas estructurales?
Son etiquetas transversales que pueden aplicarse a artículos de distintas categorías. Por ejemplo, “Tutorial”, “Reseña”, “Recomendado”, “Ahorrar” o “Privacidad”. No pertenecen a una sola sección, sino que describen el tipo de contenido o su intención.
¿Qué son las etiquetas anidadas?
Son etiquetas que tienen una categoría natural de referencia. Por ejemplo, “Google Analytics” encaja dentro de Analítica, “Email” dentro de Marketing, “Consolas” dentro de Videojuegos o “Cómic Europeo” dentro de Cómics. Ayudan a mantener una clasificación más coherente.
¿Este mapa editorial cambia la taxonomía de WordPress?
No necesariamente. El mapa editorial no tiene por qué modificar categorías ni etiquetas por sí solo. Su función principal es servir como guía visual dentro del administrador para decidir mejor cómo clasificar cada entrada.
¿Merece la pena crear un mapa editorial en una web pequeña?
Si tienes pocos artículos, probablemente no sea necesario. Empieza a tener sentido cuando la web crece, hay muchas categorías o etiquetas, publicas sobre varios temas o necesitas mantener un criterio editorial más claro.
¿Ayuda al SEO organizar mejor las categorías y etiquetas?
Puede ayudar de forma indirecta. Una taxonomía más clara mejora la estructura interna, evita duplicidades, facilita el enlazado y permite crear archivos de categorías o etiquetas más útiles. Lo importante es no crear términos sin sentido ni páginas de archivo vacías o demasiado pobres.

Deja una respuesta