När en webbplats växer under flera år, börjar taxonomin bli ett problem. Ett tyst problem, eftersom det går ganska obemärkt förbi länge.
I början händer ingenting. Du skapar en ny kategori, lägger till en tagg, testar en annan, ändrar det redaktionella fokuset… och fortsätter publicera.
Men när webbplatsen växer hamnar en artikel en dag i okategoriserat. En annan gång glömmer du en tagg som hade passat perfekt. Och tredje gången glömmer du om du hade skapat en viss tagg eller inte, och varför du gjorde det (ja/nej).
Om du vill göra det ordentligt kommer en punkt då att klassificera en artikel börjar ta längre tid än det borde. För det finns för många möjligheter och du vet inte alltid, eller minns inte alltid, när varje ska användas.
Det var det som hände mig och därför förklarade jag nyligen hur jag omkategoriserade och taggade om hela mitt WordPress.
Jag tänker inte upprepa här hur min webbplats är organiserad, förutom det nödvändigaste för att du ska förstå systemet bättre: tre stora pelare: Business, Teknik och Underhållning och flera underkategorier på andra nivån inom var och en av dem, förutom taggar.
Förresten, om du tappar bort dig lite i allt detta finns här en artikel där jag går igenom skillnaden mellan taggar och kategorier, och när man ska använda det ena eller det andra.
Índice de Contenidos del Artículo
- Målet: snabbare avgöra hur varje artikel ska klassificeras och inte ställa till det
- Lösningen: en egen skärm i WordPress-admin
- Vad den egentligen är till för
- Slutsats
- Vanliga frågor
- Vad är en taxonomi i WordPress?
- Vad används en redaktionell översikt över WordPress-taxonomi till?
- Vad är skillnaden mellan kategorier och taggar i WordPress?
- Vad är strukturella taggar?
- Vad är nästlade taggar?
- Ändrar den här redaktionella kartan WordPress-taxonomin?
- Är det värt att skapa en redaktionell karta för en liten webbplats?
- Hjälper det SEO att organisera kategorier och taggar bättre?
Målet: snabbare avgöra hur varje artikel ska klassificeras och inte ställa till det
Idén var att bygga ett system som gjorde livet lättare för mig när jag taggar en artikel. Något omedelbart, med låg risk för fel eller missar.
Dessutom ville jag, som sekundärt mål, ha viss kontroll över hur mycket innehåll jag hade skapat under varje kategori eller tagg.
En viktig sak här är att jag, innan jag började arbeta med lösningen, definierade två typer av taggar:
- Strukturella: Det är de som inte hör till en konkret kategori, utan beskriver artikelns format eller avsikt. Till exempel: Tutorial, Recension, Rekommenderat, Spara eller Integritet.
- Nästlade: De här har faktiskt en naturlig kategori. Till exempel, Google Analytics passar in i underkategorin Analys, Email inom Marketing, Chromebook inom Hardware, Konsoler inom Videospel eller Europeisk serie inom Serier.
Det här gjorde visualiseringen mycket enklare, som du snart ska få se.
Lösningen: en egen skärm i WordPress-admin
Jag hade kunnat bygga det som en mindmap, vilket var min första idé eftersom det blir så visuellt.
Eller i Excel, på grund av siffrorna.
Men i båda fallen skulle hantering och underhåll vara manuellt, något jag ville undvika till varje pris.
Så lösningen var att bygga något inne i WordPress.
Hur gjorde jag?
Genom att skapa en anpassad sida i WordPress-administrationen med kod i functions.php.

Den skärmen fungerar som en liten redaktionell översikt delad i två halvor:
På den vänstra sidan visas huvudkategorierna och deras underkategorier. Under varje visas rekommenderade taggar för att klassificera artiklar i det blocket.
På den högra sidan visas taggarna, uppdelade i de två block som nämnts tidigare: strukturella och nästlade.
Dessutom lade jag till:
- En sökfunktion.
- Länkar till arkiv och redigering
- Artikelräknare per taxonomi.
Du kommer åt den från inläggssektionen:

Koden
Här är koden som jag lade till i functions.php, men se upp: du måste redigera den så att den passar dina kategorier och taggar. Du kan göra det själv eller berätta för ChatGPT och låta den ändra den åt dig:
/* =========================================================
* 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
}
Dessutom kan du, om du vill, separera CSS:en i style.css, men jag föredrog att hålla all kod samlad.
Vad den egentligen är till för
Den här redaktionella översikten ändrar inte WordPress-taxonomin, utan gör den lättare att använda.
Tidigare hade jag en lista med kategorier och taggar utifrån ett kriterium jag valde då. Nu har jag det kriteriet synligt och nära till hands, vilket gör att jag kan:
- Klassificera inlägg snabbare och behålla redaktionell konsekvens.
- Undvika att skapa dubbla eller onödiga taggar.
- Upptäcka taxonomier med få artiklar.
- Skala webbplatsen korrekt om jag publicerar mer innehåll, vilket är tanken.
Slutsats
Att organisera WordPress-taxonomin handlar inte bara om att skapa kategorier och taggar, utan om att ha ett system för att använda dem rätt.
I mitt fall behövde jag vid det här laget ett redaktionellt lager ovanpå: ett enkelt system som föreslår de taggar som är rimliga för varje typ av innehåll.
Om du har en liten webbplats behöver du det kanske inte, men om du har publicerat i flera år och redan börjar tveka mellan kategorier, taggar, ämnen, format och verktyg kan en redaktionell översikt eller ett redaktionellt system spara dig mycket kaos, både nu och framöver.
Det är ingen stor teknisk revolution, men det är en förbättring som sparar tid och låter dig publicera med samma kriterium varje gång.
Vanliga frågor
Vad är en taxonomi i WordPress?
En taxonomi i WordPress är ett sätt att organisera innehåll. De vanligaste är kategorier och taggar, även om WordPress också låter dig skapa anpassade taxonomier. I praktiken används de för att klassificera inlägg och göra en webbplats lättare att navigera och underhålla.
Vad används en redaktionell översikt över WordPress-taxonomi till?
Den hjälper dig att ha klart för dig vilka kategorier och taggar du ska använda i varje artikel. I stället för att bestämma det ur minnet varje gång du publicerar har du en intern skärm där du ser kategorierna, rekommenderade taggar och den redaktionella funktionen för varje term.
Vad är skillnaden mellan kategorier och taggar i WordPress?
Kategorier representerar vanligtvis de stora sektionerna på en webbplats. Taggar används för att koppla innehåll efter ämne, format, verktyg, författare, avsikt eller vinkel. Till exempel kan en kategori vara “Teknik” och en tagg “WordPress”, “Tutorial” eller “Integritet”.
Vad är strukturella taggar?
Det är övergripande taggar som kan användas på artiklar från olika kategorier. Till exempel “Tutorial”, “Recension”, “Rekommenderat”, “Spara” eller “Integritet”. De hör inte till en enda sektion, utan beskriver typen av innehåll eller dess avsikt.
Vad är nästlade taggar?
Det är taggar som har en naturlig referenskategori. Till exempel passar “Google Analytics” inom Analys, “Email” inom Marketing, “Konsoler” inom Videospel eller “Europeiska serier” inom Serier. De hjälper till att hålla klassificeringen mer konsekvent.
Ändrar den här redaktionella kartan WordPress-taxonomin?
Inte nödvändigtvis. Den redaktionella kartan behöver inte ändra kategorier eller taggar av sig själv. Dess huvudsakliga funktion är att fungera som en visuell guide i administrationen för att bättre avgöra hur varje inlägg ska klassificeras.
Är det värt att skapa en redaktionell karta för en liten webbplats?
Om du har få artiklar är det förmodligen inte nödvändigt. Det börjar bli meningsfullt när webbplatsen växer, det finns många kategorier eller taggar, du publicerar om flera ämnen eller du behöver hålla ett tydligare redaktionellt kriterium.
Hjälper det SEO att organisera kategorier och taggar bättre?
Det kan hjälpa indirekt. En tydligare taxonomi förbättrar den interna strukturen, undviker dubbletter, gör länkning enklare och gör det möjligt att skapa mer användbara kategori- eller taggarkiv. Det viktiga är att inte skapa meningslösa termer eller tomma eller alltför tunna arkivsidor.

Lämna ett svar