En nuestra experiencia, si agregas muchas categorías a tus publicaciones de WordPress, las cosas pueden empezar a verse un poco abarrotadas. Múltiples categorías, especialmente las categorías principales e hijas, pueden saturar tus diseños y dificultar que los lectores encuentren lo que buscan.
¿No sería más limpio mostrar solo la categoría hija para cada publicación?
Esta guía te mostrará cómo modificar el archivo de tu tema de WordPress para mostrar solo las categorías hijas en tu bucle de publicaciones, dándole a tu blog una sensación más optimizada y fácil de usar.

¿Por qué mostrar solo la categoría hija en tu bucle de publicaciones de WordPress?
Al crear un blog de WordPress, puedes organizar tu contenido usando categorías y etiquetas.
Para ayudar a los lectores a encontrar contenido interesante más rápido, incluso podrías crear categorías hijas (o subcategorías).
Por ejemplo, si tienes un blog de viajes, podrías crear una categoría 'Destinos' y luego tener categorías hijas como 'Europa', 'América' y 'Australia'.
Por defecto, la mayoría de los temas de WordPress muestran todas las categorías principales e hijas de una publicación.

Sin embargo, si usas muchas categorías, entonces las páginas de tu blog pueden empezar a verse desordenadas y complicadas. También puede dificultar que los lectores encuentren la categoría que les interesa.
Por esa razón, es posible que desees ocultar las categorías principales genéricas de una publicación y mostrar solo las subcategorías. Dicho esto, veamos cómo puedes mostrar solo las subcategorías en el bucle de publicaciones de WordPress.
Antes de editar un archivo de tema de WordPress: Puntos clave a recordar
Esta guía está dirigida a personas que se sienten cómodas codificando y editando archivos de temas de WordPress. Aquí hay algunas cosas que debes hacer antes de seguir el tutorial:
- Primero, necesitas conectar tu sitio web con FTP o abrir el administrador de archivos de tu proveedor de hosting para poder acceder a esos archivos.
- Si eres principiante, puedes consultar nuestra guía para principiantes sobre cómo pegar fragmentos de la web en WordPress para prepararte de antemano.
- Recomendamos crear una copia de seguridad o usar un sitio de staging para seguir este método. De esta manera, si algo sale mal, tu sitio en vivo no se verá afectado.
Por último, esta guía solo es aplicable a temas clásicos de WordPress. Los temas de bloques tienen una estructura diferente para los archivos del tema.
Mostrar solo la categoría secundaria en el bucle de publicaciones de WordPress
En este tutorial, te mostraremos cómo editar el archivo de tu tema usando el administrador de archivos de Bluehost. Pero independientemente de tu proveedor de hosting, los pasos deberían ser similares.
Primero, inicia sesión en tu panel de Bluehost y navega a la pestaña 'Websites'. Luego, haz clic en 'Settings' en el sitio que deseas editar.

A continuación, desplázate hacia abajo hasta la sección Quick Links.
Luego, haz clic en el botón 'File Manager'.

Esto abrirá el administrador de archivos.
Ahora, necesitarás encontrar el código en el archivo de tu tema que es responsable de mostrar las categorías. Puedes empezar a hacer esto yendo a la carpeta public_html de tu sitio » wp-content » themes » la carpeta de tu tema actual.
En esta etapa, es posible que necesites abrir cada archivo y carpeta uno por uno para encontrar el archivo correcto para editar. Una cosa que puedes hacer es intentar encontrar código relacionado con categorías, como has_category o get_the_category_list. Si los localizas, entonces deberías estar en el archivo correcto.
Si no puedes encontrar el archivo de plantilla correcto, consulta nuestra hoja de referencia de la jerarquía de plantillas de WordPress y nuestra guía sobre cómo encontrar el archivo de tema correcto para editar.
Si usas el tema Twenty Twenty-One, el archivo que debes buscar es el archivo template-tags dentro de la carpeta 'inc'. Una vez que lo hayas encontrado, puedes hacer clic derecho sobre el archivo y seleccionar 'Editar'.

En el archivo, este es el fragmento responsable de mostrar las categorías y etiquetas:
if ( has_category() || has_tag() ) {
echo '<div class="post-taxonomies">';
$categories_list = get_the_category_list( wp_get_list_item_separator() );
if ( $categories_list ) {
printf(
/* translators: %s: List of categories. */
'<span class="cat-links">' . esc_html__( 'Categorized as %s', 'twentytwentyone' ) . ' </span>',
$categories_list // phpcs:ignore WordPress.Security.EscapeOutput
);
}
$tags_list = get_the_tag_list( '', wp_get_list_item_separator() );
if ( $tags_list && ! is_wp_error( $tags_list ) ) {
printf(
/* translators: %s: List of tags. */
'<span class="tags-links">' . esc_html__( 'Tagged %s', 'twentytwentyone' ) . '</span>',
$tags_list // phpcs:ignore WordPress.Security.EscapeOutput
);
}
echo '</div>';
}
} else {
Ahora que has encontrado el código correcto, puedes reemplazar todo ese fragmento con esto:
if ( has_category() || has_tag() ) {
echo '<div class="post-taxonomies">';
// Get the list of categories
$categories = get_the_category();
$child_cat_IDs = array(); // Array to store child category IDs
$parent_cat_IDs = array(); // Array to store parent category IDs
foreach ( $categories as $category ) {
if ( $category->parent > 0 ) {
$child_cat_IDs[] = $category->term_id; // Store the child category ID
} else {
$parent_cat_IDs[] = $category->term_id; // Store the parent category ID
}
}
// Output child categories if there are any
if ( !empty($child_cat_IDs) ) {
$output = '<span class="cat-links">' . esc_html__( 'Categorized as ', 'twentytwentyone' ) . ' ';
foreach ( $child_cat_IDs as $cat_id ) {
$cat_link = get_category_link($cat_id);
$cat_name = get_cat_name($cat_id);
$output .= '<a href="' . esc_url($cat_link) . '">' . esc_html($cat_name) . '</a> ';
}
$output .= '</span>'; // Close the span tag after the loop
echo $output; // Output the child category links
// Output parent categories if there are no child categories
} elseif ( !empty($parent_cat_IDs) ) {
$output = '<span class="cat-links">' . esc_html__( 'Categorized as ', 'twentytwentyone' ) . ' ';
foreach ( $parent_cat_IDs as $cat_id ) {
$cat_link = get_category_link($cat_id);
$cat_name = get_cat_name($cat_id);
$output .= '<a href="' . esc_url($cat_link) . '">' . esc_html($cat_name) . '</a> ';
}
$output .= '</span>'; // Close the span tag after the loop
echo $output; // Output the parent category links
}
// Handle tags
$tags_list = get_the_tag_list('', wp_get_list_item_separator());
if ( $tags_list && ! is_wp_error( $tags_list ) ) {
printf(
/* translators: %s: List of tags. */
'<span class="tags-links">' . esc_html__( 'Tagged %s', 'twentytwentyone' ) . '</span>',
$tags_list // phpcs:ignore WordPress.Security.EscapeOutput
);
}
echo '</div>'; // Close post-taxonomies div
}
} else {
Este fragmento de código primero identifica todas las categorías asignadas a la publicación. Luego, verifica si cada categoría tiene un padre.
Si lo tiene, eso significa que es una subcategoría y se agrega a la lista de visualización. Las categorías principales se omiten, lo que resulta en una visualización más limpia y específica de la categorización de tu publicación.
Así es como debería verse cuando reemplaces el código:

Cuando termines, simplemente guarda tus cambios.
Ahora, necesitas visitar una publicación que tenga una o más categorías secundarias. Verás que la categoría principal está oculta y WordPress ahora solo muestra las categorías secundarias.

Esperamos que este artículo te haya ayudado a aprender cómo mostrar solo la categoría secundaria en tus publicaciones de WordPress. A continuación, es posible que desees ver nuestro artículo sobre cómo estilizar categorías individuales de manera diferente en WordPress y nuestra guía para principiantes sobre cómo buscar por categoría en WordPress.
Si te gustó este artículo, suscríbete a nuestro canal de YouTube para obtener tutoriales en video de WordPress. También puedes encontrarnos en Twitter y Facebook.


Mike
¡Lo logré!
foreach((get_the_category()) as $childcat) { $parentcat = $childcat->category_parent; if (cat_is_ancestor_of(10, $childcat)) { echo get_cat_name($parentcat); } }
MIke
Tengo tres categorías principales y este código está funcionando correctamente en mi bucle de página individual para mostrar el nombre de la categoría seleccionada. Ahora quiero mostrar el padre de la categoría. La complicación es que tengo dos niveles debajo de la categoría principal (3 niveles) y quiero mostrar el padre de un nivel, no el padre del nivel superior. Parece fácil mostrar el padre superior, pero no he visto ningún código para devolver la categoría de nivel secundario de una categoría nieta.
amnachohan
¿Funcionará fuera del bucle?
Marian Rick
Este es un gran fragmento de código. ¡Muchas gracias hasta ahora!
Para uno de mis proyectos, tengo que ir más allá y mostrar solo la subcategoría más baja. Por lo tanto, puede haber tres niveles (Formas -> Cuadrados -> Cuadrados Grandes). Con este código, se muestran todos los subniveles (Cuadrados -> Cuadrados Grandes). ¿Cómo puedo decirle a este código que repita el proceso hasta que se encuentre y se muestre solo el último hijo?
¡Si tienen alguna solución para eso, son mis héroes una vez más! ¡Sigan con su gran trabajo y blog!
GoranJakovljevic
¿es posible hacer esto para 2 categorías en lugar de una sola?
gashface
¿Cómo incluiría &orderby=ID?
Andus Beckus
¡Esto es genial, gracias!
Pero, ¿cómo muestras los hijos de todas las categorías y no solo la cat 10?
Be great if someone could help with this.
Personal editorial
Si estás intentando mostrar una lista de todas las categorías secundarias, entonces usa la función wp_list_categories(). Tiene parámetros que te permiten listar solo categorías secundarias o solo categorías principales. Pero eso no funciona para el caso del que estamos hablando en este artículo.
Administrador
Mattia
genial, pero si quiero mostrar no la "categoría 10" sino la "categoría actual"?
Keith Davis
Grandes fragmentos de información de ustedes.
Realmente tengo que empezar a meterme en esto del PHP.
Gran sitio muchachos y noto que ya están en Pagerank 6.
¿Qué tal un par de posts sobre cómo subir tu pagerank?