Tutoriales de WordPress de Confianza, cuando más los necesitas.
Guía para Principiantes de WordPress
Copa WPB
25 Millones+
Sitios web que usan nuestros plugins
16+
Años de experiencia en WordPress
3000+
Tutoriales de WordPress de expertos

Cómo mostrar subcategorías en las páginas de categoría en WordPress

En WPBeginner, siempre buscamos formas más inteligentes de mejorar la navegación para que nuestros lectores puedan encontrar fácilmente lo que buscan. Una experiencia de navegación fluida mantiene a los usuarios comprometidos y regresando por más.

Afortunadamente, WordPress ofrece una solución sencilla al permitirle organizar sus publicaciones con categorías y subcategorías. Mostrar subcategorías directamente en sus páginas de categoría puede mejorar significativamente la experiencia del usuario y optimizar la navegación en su sitio.

En este artículo, le mostraremos cómo mostrar subcategorías en las páginas de categoría en WordPress. Le proporcionaremos los fragmentos de código necesarios e instrucciones paso a paso para que la navegación de su sitio web sea mejor que nunca. ¡Empecemos!

Mostrar subcategorías en páginas de categoría en WordPress

¿Por qué mostrar subcategorías en las páginas de categoría?

Cuando escribe publicaciones para su sitio web de WordPress, puede optimizar para motores de búsqueda y mejorar la navegación del sitio al categorizar el contenido correctamente. Esto atraerá más tráfico a su sitio y permitirá a los visitantes encontrar el contenido que buscan con mayor facilidad.

En algunos sitios web, tiene sentido usar subcategorías para simplificar la estructura del sitio.

Por ejemplo, podría tener una categoría principal (padre) llamada Deportes. Luego, puede tener subcategorías debajo de Deportes llamadas NFL, NBA y MLB.

Ejemplo de uso de subcategorías en WordPress

Cuando tus visitantes hagan clic en la categoría Deportes, verán todas las publicaciones de la categoría Deportes y sus subcategorías. Sin embargo, no verán la lista de subcategorías. Eso dificulta filtrar solo las publicaciones de la NFL o la NBA.

Mostrar una lista de subcategorías en tus páginas de categoría puede mejorar la navegación del sitio. Esto es particularmente cierto si decides ocultar subcategorías en el widget de categorías de tu sitio web.

Mostrar solo categorías de nivel superior

Entonces, por ejemplo, los visitantes de tu sitio pueden pasar fácilmente de todas las publicaciones de Deportes a solo las de la NFL. Mejor aún, puedes seguir mostrando las mismas subcategorías en la página de la NFL para que puedan cambiar fácilmente de la NFL a la NBA.

Dicho esto, veamos cómo mostrar subcategorías en las páginas de categoría en WordPress.

Cómo mostrar subcategorías en las páginas de categoría en WordPress

Para mostrar subcategorías en tus páginas de archivo de categoría, necesitarás agregar código a los archivos de tu tema. Si necesitas ayuda para agregar código a tu sitio, consulta nuestra guía para principiantes sobre cómo pegar fragmentos de la web en WordPress.

Lo primero que debes hacer es ir a la carpeta de tu tema y buscar el archivo de archivo de categoría llamado category.php.

Si no ves ese archivo, tendrás que crearlo. Simplemente duplica archive.php y nómbralo category.php.

Nota: Si tu tema no incluye category.php o archive.php, entonces probablemente estés usando un framework de temas de WordPress y tendrás que crear category.php manualmente. Un buen punto de partida para aprender a crear archivos de archivo es nuestra guía sobre cómo crear páginas de archivo personalizadas en WordPress.

Ahora, simplemente agrega el siguiente código a category.php justo antes del loop:

<?php
if (is_category()) {
    $this_category = get_category($cat);
    }
    ?>
    <?php
    if($this_category->category_parent)
    $this_category = wp_list_categories('orderby=id&show_count=0
    &title_li=&use_desc_for_title=1&child_of='.$this_category->category_parent.
    "&echo=0"); else
    $this_category = wp_list_categories('orderby=id&depth=1&show_count=0
    &title_li=&use_desc_for_title=1&child_of='.$this_category->cat_ID.
    "&echo=0");
    if ($this_category) { ?> 
 
<ul>
<?php echo $this_category; ?>
 
</ul>
 
<?php } ?>
Agrega el fragmento de código a category.php justo antes del bucle

Ahora, cuando visites una página de categoría, verás una lista de subcategorías.

En nuestro sitio de demostración, la página de la categoría Deportes muestra enlaces a las subcategorías NFL, NBA y MLB.

Vista previa de subcategorías en la página de categoría

Cuando haces clic en el enlace de la NFL, te lleva a la página de la subcategoría de la NFL.

Aquí todavía puedes ver los enlaces a las subcategorías de Deportes, para que puedas cambiar fácilmente entre los diferentes tipos de deportes. Esto puede simplificar realmente la navegación en tu sitio.

Vista previa de subcategorías en la página de subcategoría

Guías expertas sobre categorías y subcategorías en WordPress

Esperamos que este tutorial te haya ayudado a aprender cómo mostrar subcategorías en las páginas de categoría en WordPress. También puedes consultar otras guías relacionadas con la visualización de categorías y subcategorías 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.

Descargo de responsabilidad: Nuestro contenido es compatible con el lector. Esto significa que si haces clic en algunos de nuestros enlaces, podemos ganar una comisión. Consulta cómo se financia WPBeginner, por qué es importante y cómo puedes apoyarnos. Aquí está nuestro proceso editorial.

El Kit de herramientas definitivo para WordPress

Obtén acceso GRATUITO a nuestro kit de herramientas: ¡una colección de productos y recursos relacionados con WordPress que todo profesional debería tener!

Interacciones del lector

73 CommentsLeave a Reply

  1. Hola,

    Uso un tema que no contiene el archivo category.php. Las categorías y las publicaciones se muestran a través de un archive.php, en el cual el archivo se encuentra dentro de un framework de plugin que viene junto con este tema.

    • Este es un problema con el que muchas personas se encuentran cuando no miran de cerca lo que ofrece su tema. Recomendaría elegir un tema diferente y esta vez buscar categorías con capas, etiquetas, menús modificables, editor de bloques y que sea adaptable a dispositivos móviles. Muchos existen de forma gratuita que proporcionan estas funciones básicas. Es mucho más fácil avanzar y continuar mejorando tu sitio utilizando un tema que sea compatible con la flexibilidad que buscas, en lugar de ajustar un tema que no satisface tus necesidades de inmediato. Seguirás ajustando continuamente en el futuro, ¡y eso no es divertido, créeme!

      Este sitio tiene publicaciones sobre temas responsivos y las características que ofrecen, y después de que elijas un mejor tema, aquí tienes el enlace para cambiarlo. Es un proceso muy simple.
      https://www.wpbeginner.com/beginners-guide/how-to-properly-change-a-wordpress-theme/

  2. Pegué este código en mi archivo category.php, pero cuando voy a mysite.com/category no se muestra. ¿Alguna sugerencia?

    • Querrías asegurarte de que el código esté antes del bucle en tu category.php y si está colocado ahí correctamente, entonces querrías consultar con el soporte de tu tema específico para ver si tienen algo que anule la visualización habitual.

      Administrador

  3. Inserté este código a través del plugin Code Snippets, que ha funcionado con éxito al insertar otro código, ¡pero ahora tengo lo que descubrí que se llama la 'pantalla blanca de la muerte'! Incluso en la página de mi sitio web que termina en /wp-admin.

    ¿Alguien sabe cómo solucionar esto cuando no puedo ver mi panel de administración?

  4. este código no funciona exactamente como quiero, quiero una disposición adecuada de categorías como navegación.
    Categoría padre
    Nieto 1
    Nieto 2
    subnieto 1
    Categorías hermanas

  5. Hola,

    ¿Cómo podemos usar esto para taxonomías de publicaciones personalizadas creadas?

    Quiero listar primero las categorías principales, luego las subcategorías y sub, etc., hasta llegar a las páginas de publicaciones.

    ¿Podemos cambiar este código para las categorías de publicaciones personalizadas?

    Gracias

  6. Pero, no para ocultar la Categoría Principal, cuando hago clic en la página de subcategoría. Quiero mostrar todas las subcategorías en la categoría principal, así como en la subcategoría también.

  7. Gracias por esta gran publicación. He logrado crear un filtro para mi página de categoría con este código. Pero me gustaría tener un enlace para mostrar todas las publicaciones de la categoría principal; si se hizo clic en uno de los enlaces de filtro de subcategoría y se desea volver a ver todas las publicaciones de la categoría principal. Algo así como esto:
    Todas (20) Subcategoría 1 (12) Subcategoría 2 (5). Subcategoría 3 (3)

    ¿Es eso posible? ¿Y cómo puedo obtener el número como parte del enlace?

  8. Hola

    No sé nada de codificación. Realmente me gustaría agregar subcategorías a mi blog de WordPress para poder organizar mejor mi contenido. ¿Dónde pego este código para que funcione? ¿Qué sucederá exactamente? Me gustaría entender esto un poco más, por favor, si puedes ayudar.

  9. Sé que esta es una publicación antigua, pero es exactamente lo que busco para un proyecto actual.
    ¿Hay alguna manera de que una imagen aparezca con la categoría.
    He usado este plugin en el pasado para agregar una imagen a una categoría – Imágenes de categorías

    <?php if( function_exists('z_taxonomy_image') AND get_option('z_taxonomy_image'.$cat_id)” ) z_taxonomy_image($cat_id); ?>

    Simplemente no estoy seguro de cómo implementarlo con tu código.

  10. Hola,

    Gracias por el código.

    Tengo una estructura de categorías como:

    Categoría Principal: Mejoras para el Hogar
    Categoría Secundaria: Techos
    Categoría General: Canaletas

    En esta página: Quiero mostrar todas las categorías secundarias, lo cual está bien, las muestra todas.

    En esta página: Quiero mostrar todas las categorías de nivel inferior, pero muestra todas las categorías secundarias.

    En esta página: No quiero mostrar nada, ya que esta es la última.

    Por favor, hazme saber cómo arreglarlo.

    Usé tu código de esta manera:

    category_parent)
    $this_category = wp_list_categories(‘orderby=id&show_count=0&hide_empty=0&title_li=&use_desc_for_title=1&child_of=’.$this_category->category_parent.
    “&echo=0”); else
    $this_category = wp_list_categories(‘orderby=id&depth=1&show_count=0&hide_empty=0&title_li=&use_desc_for_title=1&child_of=’.$this_category->cat_ID.
    “&echo=0”);
    if ($this_category) { ?>

  11. Llámame estúpido, pero ¿dónde ponemos este código, en header.php, index.php, functions.php?

    Para tu información, tengo una página donde hacen clic en una imagen en la página principal y los lleva (actualmente) a una categoría principal.

    Mi objetivo es que cuando hagan clic en la imagen, los lleve a una página que liste las subcategorías de la categoría, ¡esto permitirá ordenar las publicaciones!

  12. ¿Es posible mostrar las publicaciones en las páginas de categoría por subcategoría usando esto?

    Ejemplo:

    ** Página de Categoría Principal **

    ** Subcategoría #1 **
    – Publicación #1
    – Publicación #2

    ** Subcategoría #2 **
    – Publicación #3
    – Publicación #4

  13. Desde wp 4.0 obtengo el siguiente error si debug está activado:

    Notice: get_all_category_ids is niet meer in gebruik sinds versie4.0! Gebruik in plaats daarvan get_terms(). in

    Este es el error en holandés, en inglés dice que está obsoleto. ¿Cómo se puede ajustar el código para que funcione con el nuevo estándar?

  14. Gracias por esto, pero cambiar el argumento orderby no parece tener ningún impacto en el orden real mostrado. ¿Alguien más ha tenido un problema similar? ¿Alguna solución?

  15. Hola

    Necesito ayuda con el script anterior. Tengo una lista de categorías de países como EE. UU., Reino Unido, Italia, Francia, etc., y cada país tendrá ciudades como subcategorías.
    Este script funciona muy bien, cuando hago clic en Italia, las subcategorías de ciudades aparecen en la barra lateral, sin embargo, cuando hago clic en una página o dentro de una publicación, las ciudades desaparecen y solo se muestra el país en la barra lateral.
    ¿Cómo puedo modificarlo para que cuando haga clic en una publicación, las ciudades permanezcan y cuando haga clic en una página como Acerca de o Inicio, las ciudades desaparezcan? También uso el tema Hueman y necesitaré que las ciudades aparezcan en el menú del encabezado. ¿Cuánto cobras por eso? Envíame un correo electrónico a kid_punky @ yahoo.com

  16. Estoy usando el plugin jigoshop para un sitio web de ropa de comercio electrónico
    en la adición de categoría de jigoshop
    HOMBRE
    MUJER
    NIÑOS
    OTRO
    también tiene subcategoría
    quiero mostrar la categoría principal en la barra lateral y cuando se haga clic en la categoría, se deben mostrar las subcategorías;

    • Mitul, para CSS puedes verlo en el código fuente, siéntete libre de jugar con él. Puedes usar etiquetas condicionales en tu plantilla para mostrar tus subcategorías de forma diferente o puedes crear una nueva plantilla para la subcategoría.

      Administrador

  17. Hola,
    Usé tu código con éxito, y gracias por eso.
    Tengo un pequeño problema: quité “depth=”1″ del código pero la categoría principal no aparece en la barra lateral. solo las subcategorías.
    ¿Cómo puedo mostrar tanto la categoría padre como las subcategorías?
    Gracias.

  18. Hola. ¿Funcionará esto con WordPress 3.3.1?

    Además, esta pregunta podría parecer tonta, pero quiero asegurarme:

    Este código permitirá que las subcategorías específicas de la página de categoría en la que te encuentras aparezcan en la barra lateral, ¿correcto? Dicho de otra manera: Estoy en la página de inicio. Hago clic en la navegación principal que dice "Illinois". Eso me lleva a una página de archivo (de categoría) para Illinois, que tiene una barra lateral. En esa barra lateral está: Chicago, Evanston, Skokie (subcategorías). Ahora, si hiciera clic en "Nueva York" en la navegación principal, iría a una página de archivo (de categoría) para Nueva York, y en la columna derecha de esa página estaría: NYC, Albany, Buffalo, Rochester.

    ¿Estoy en lo correcto, o estoy malinterpretando la aplicación?

    ¡Muchas gracias!

  19. el comentario no se publicó correctamente... así que lo pongo de nuevo:

    Categoría-Principal

    Subcategoría-1, Subcategoría-2, Subcategoría-3, Subcategoría-4, Subcategoría-5,

    Subcategoría-6, Subcategoría-7, y así sucesivamente ………….

  20. Quiero mostrar una lista de subcategorías en la página de archivo de la categoría principal, por ejemplo:

    <Categoría Principal>

    <subcategoría-1>, <subcategoría-2>, <subcategoría-3>, <subcategoría-4>, <subcategoría-5>, <subcategoría-6>, y así sucesivamente …

    He copiado el mismo código proporcionado en este artículo, pero no funciona... no se muestra nada en la página de la categoría.

    Por favor, ayuden.

  21. Hola, espero que haya una solución para lo que estoy intentando hacer, ya que no parece encontrar una solución en ninguna parte.

    Lo que tengo son varias subcategorías bajo una categoría principal. pero las categorías de segundo nivel no son categorías secundarias de la principal. solo las subcategorías bajo el segundo nivel son secundarias. pero aún quiero contener el bucle de esas categorías en la categoría principal, pero esencialmente nunca tendrá una publicación ni una subcategoría. Logré encontrar el filtro para mostrar un bucle de las categorías debajo de ella, pero la página solo aparece si hay una publicación en esa categoría...

    Jajaja, todo esto suena bastante complicado cuando lo digo en voz alta… Espero que entiendas de lo que estoy hablando.

    En resumen, quiero que la página de categoría se muestre incluso sin publicaciones debajo de ella. Estoy usando un tema personalizado y archivos de plantilla para cada categoría.

    Hope someone has the answer. :)

    Saludos

    • @robolist ¿Cuál es el punto de tener una categoría sin publicaciones debajo? Parece que ni siquiera debería estar ahí. Quizás quieras dar más detalles para que podamos ver qué estás haciendo con esa categoría. Tal vez se debería tomar una ruta alternativa.

      • @wpbeginner thanks for getting back so fast :)

        ok, la razón es porque no quiero que la categoría principal aparezca en la estructura de la URL. aunque la URL final de la publicación será diferente. La categoría principal será algo como 'destinos' y debajo de ella habrá países. con cada país teniendo una ciudad hija y luego publicaciones debajo de la ciudad. así que el menú principal mostrará 'destinos' con un bucle de todas las publicaciones debajo de eso. luego debajo de eso en el submenú estará el país y la ciudad. con tanto el país como la ciudad conteniendo un bucle de sus respectivas publicaciones. así que para cuando llegues a la página de destino de la ciudad, no quiero que la URL sea '.com/destinos/país/ciudad/' quiero que sea '.com/país/ciudad/'

        ¿Ves mi dilema?

        • @robolist Parece que hay una mejor manera. ¿No tendría más sentido eliminar la categoría de destinos por completo? Crea una página llamada Destinos – usa una plantilla de página personalizada para que muestre todas las categorías que WordPress tiene usando la función wp_list_categories(). Ahora todavía tendrás las URL como .com/país/ciudad/ Y cuando el usuario vaya a una página como .com/destinos/ << Todavía pueden ver todos los países listados allí. ¿Tiene sentido? Si no, entonces tal vez no entendemos lo que estás tratando de hacer.

        • @wpbeginner that does sound better and makes sense… But i am not familiar with the wp_list_categories() function, although i have seen it around. This could be the one. thanks so much for your help, i will go and give that a try :) thanks so much…

          gracias también por todos tus increíbles tutoriales en este sitio…

        • @robolist wp_list_categories() es una función muy simple y potente. http://codex.wordpress.org/Template_Tags/wp_list_categoriesIt te permitirá mostrar tus categorías en cualquier lugar de una plantilla de página personalizada. https://www.wpbeginner.com/wp-themes/how-to-create-a-custom-page-in-wordpress/ Así que crea una plantilla de página personalizada. En el área de la plantilla, pega el código wp_list_categories(); Asegúrate de establecer child=0 si no quieres mostrar tus ciudades allí. Como supongo, solo querrás mostrar los países allí. Luego, una vez que un usuario haga clic en un país, irá a ver todas las ciudades. Estilízalo a tu gusto y listo.

        • @wpbeginner

          hey guys, thanks so much for your advice last night, it worked a treat :). I am however stuck on the permalink structure now and would be very grateful if you and any tips for me again :)

          Mi publicación final está ahora al final de una estructura de categoría de tres niveles, 'continente/país/ciudad/publicación/' (destinos, como recomendaste, ahora es una página). Pero para la URL final de la publicación, no quiero que tenga cuatro niveles de profundidad y preferiría que solo tuviera tres. Así que el permalink que me gustaría es país/ciudad/publicación/... ¿Hay alguna manera de eliminar la categoría principal superior de la estructura de permalink? En este momento lo tengo configurado así '/%category%/%postname%-%post_id%/' Pero automáticamente toma todas las categorías principales. ¿Tengo que volver a hacer de la categoría superior una página o hay una mejor manera de resolver esto? Muchas gracias de antemano por tu ayuda.

          Saludos

        • @robolist Puedes escribir algunas reglas de reescritura de permalinks, pero eso es un poco más difícil que hacer de la categoría superior una página. Solución fácil: haz del continente una página. Solución difícil: regla de reescritura de permalink. Honestamente, ¿necesitas continentes? La mayoría de la gente no busca por América del Norte o América del Sur... Simplemente buscan países...

        • @wpbeginner Gracias por responder.

          Bueno, tener los continentes ayuda a organizar el blog, ya que eventualmente se hará bastante grande, son más como regiones, en realidad, no exactamente continentes, por eso preferiría incluirlos. Me encantaría aprender a hacer la regla de reescritura porque de esa manera no tendré que agregar constantemente IDs de categoría adicionales a las páginas de regiones cada vez que se agregue una nueva ciudad/país. La forma en que lo tengo configurado con los destinos es perfecta porque nunca agregaré más regiones, así que nunca tendré que volver a tocar esa página :), tal como está, hay 9 regiones, eso es todo, pero se agregarán países y ciudades con el tiempo

          i dont suppose you could point me in the right direction for the rewrite? :) I would be ever so grateful

          Muchas gracias por toda tu ayuda hasta ahora

        • @robolist La reescritura requiere escribir código personalizado y eso es algo por lo que cobramos. Puedes buscar en Google tu guía o mirar en el núcleo de WordPress si te gusta abordar el código.

        • @wpbeginner I would love to hire you guys but just dont have a budget for that :(, plus i would love to learn how to do it myself. but thanks so much for all the help you have given me on this. if i do fail at my attempt then i will just go for the simple way out and create pages for the regions. thanks again :)

  22. ¿Alguna vez obtuviste esto? Estoy tratando de lograr lo mismo ahora. Solo mostrar subcategorías en las páginas de categorías si hay subcategorías. Esa cosa de "No hay categorías" me está matando.

  23. ¡Hola! Disculpa mi inglés.

    Me gustaría usar tu código, pero no en la barra lateral. Cuando hago clic en una categoría principal, me gustaría encontrar en la barra de navegación el submenú en lugar del menú principal.

    Disculpa, pero no soy desarrollador, ¿dónde tengo que pegar tu código?

    In category.php ? :(

    Gracias

  24. El código no está terminado.

    «…
    if ($this_category) {
    //Debe haber un código
    //para mostrar la lista de subcategorías.
    }?>
    …»

    Algo así:
    if ($this_category) {
    printf( $this_category );
    }

    P.D. trabajando en «Twenty Ten» 3.0.1

  25. Hola,
    Este código es exactamente lo que necesito, solo que quiero usarlo en la sección de contenido de category.php, no en la barra lateral. De todos modos, lo pegué y obtengo un error de análisis. ¿Falta algo al final del fragmento de código?
    Gracias.
    -Rachel

  26. Este es un gran punto de partida para mí, ya que había estado buscando por todas partes esto.

    Me preguntaba si había una manera de elaborar sobre esto y permitir, digamos, 1 título y extracto de publicación, luego 4 títulos más de cada subcategoría, mostrados en un div.

    I have been trying to find a way to do this for months but have never found anyone able to assist. I even offered a small payment but no-one came forward :)

    Thanks if anyone can offer any advice :)

    Karl

  27. Hola, muchas gracias por este código y lo tengo funcionando en mi plantilla. ¿Cómo evitaría que todo este código se ejecute si una categoría NO tiene hijos? Si no hay hijos, crea una lista vacía e imprime el texto “No hay categorías”. Así es como lo tenía configurado con el código de Yoast:

    cat_ID) != "") { ?>

    Subcategorías:<br> cat_ID);?>

    Si no hubiera subcategorías, no aparecería nada. Tu código es mejor, pero necesito que solo aparezca SI hay subcategorías. ¿Cómo lo lograría? Gracias por cualquier sugerencia.

  28. Hola,

    Estoy tratando de lograr esto en la barra lateral, solo que en lugar de enlaces, quiero listar las publicaciones recientes en subcategorías.

    y por supuesto, esto ocurriría en todas las páginas de categorías y subcategorías, así como en las publicaciones individuales.

    No sé si esto es posible. Pero, he estado buscando como loco, y no ser programador no ayuda tampoco.

Deja una respuesta

Gracias por elegir dejar un comentario. Ten en cuenta que todos los comentarios son moderados de acuerdo con nuestra política de comentarios, y tu dirección de correo electrónico NO será publicada. Por favor, NO uses palabras clave en el campo del nombre. Tengamos una conversación personal y significativa.