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 una lista de páginas secundarias para una página principal en WordPress

Recientemente, uno de nuestros lectores nos preguntó cómo mostrar las páginas secundarias de una página de WordPress. Es una pregunta que recibimos con bastante frecuencia en WPBeginner, y resalta una necesidad común para mejorar la navegación del sitio web y la experiencia del usuario. 

Si organiza su sitio web de WordPress con páginas principales y secundarias, es posible que desee mostrar sus páginas secundarias o subpáginas en la página principal. Esto ayuda a los usuarios a ver fácilmente toda la información disponible dentro de una sección específica y a navegar rápidamente a subtemas relevantes.

También puede que desee mostrar el enlace de la página principal en cada subpágina para facilitar la navegación, creando un efecto similar a las migas de pan. Esta navegación simplificada evita que los usuarios se pierdan en las profundidades de su sitio y mejora su experiencia de navegación general.

En este artículo, le mostraremos cómo mostrar fácilmente una lista de páginas secundarias para una página principal en WordPress.

Mostrar una lista de páginas secundarias para una página principal en WordPress

¿Cuándo necesita mostrar una lista de páginas secundarias?

WordPress viene con dos tipos de contenido predeterminados llamados publicaciones y páginas. Las publicaciones son contenido de blog y generalmente se organizan con categorías y etiquetas.

Las páginas son contenido único o independiente que es perenne, como una página de 'Acerca de nosotros' o 'Contáctenos', por ejemplo.

En WordPress, las páginas pueden ser jerárquicas, lo que significa que puedes organizarlas con páginas principales y secundarias. Por ejemplo, podrías querer crear una página de Producto con páginas secundarias para Características, Precios y Soporte.

Para crear una página secundaria, sigue nuestra guía sobre cómo crear una página secundaria en WordPress.

Después de haber creado tus páginas principales y secundarias, es posible que desees listar las páginas secundarias en la página principal.

Ahora, una forma fácil de hacer esto es editando manualmente la página principal y agregar una lista de enlaces individualmente.

Agregar manualmente enlaces de páginas secundarias

Sin embargo, necesitarás editar manualmente la página principal cada vez que agregues o elimines una página secundaria.

¿No sería mejor si pudieras simplemente crear una página secundaria y que apareciera automáticamente como un enlace en la página principal?

Dicho esto, veamos algunas otras formas dinámicas de mostrar rápidamente una lista de páginas secundarias en la página principal en WordPress. Te mostraremos tres métodos, para que puedas elegir el que mejor te convenga:

Método 1. Mostrar páginas secundarias en la página principal usando un plugin

Este método es la forma más fácil de mostrar páginas secundarias en una página principal, y se recomienda para todos los usuarios.

Primero, necesitas instalar y activar el plugin Page-list. Para más detalles, consulta nuestra guía paso a paso sobre cómo instalar un plugin de WordPress.

Al activarse, necesitas editar la página principal y simplemente agregar el siguiente shortcode donde quieras mostrar la lista de páginas secundarias.

[subpages]

Ahora puedes guardar tu página y previsualizarla en una nueva pestaña del navegador. Notarás que muestra una simple lista con viñetas de todas las páginas secundarias.

Lista simple de enlaces de páginas secundarias

Si quieres, puedes agregar algo de CSS personalizado para cambiar la apariencia de la lista.

Aquí tienes algunos ejemplos de CSS que puedes usar como punto de partida.

ul.page-list.subpages-page-list {
    list-style: none;
    list-style-type: none;
    background-color: #eee;
    border: 1px solid #CCC;
    padding: 20px;
}

Después de aplicar tu CSS personalizado, puedes previsualizar la página principal.

Así es como se veía en nuestro sitio web de WordPress de prueba:

Lista de páginas secundarias con CSS

El plugin proporciona un montón de parámetros de shortcode que te permiten establecer la profundidad, excluir páginas, el número de elementos y más.

Para más detalles, por favor consulta la página del plugin para obtener documentación detallada.

Método 2. Listar páginas secundarias de una página principal usando código

Este método es un poco avanzado y requiere que agregues código a tu sitio web de WordPress. Si no lo has hecho antes, consulta nuestra guía sobre cómo copiar y pegar código en WordPress.

Para listar las páginas secundarias de una página principal, necesitas agregar el siguiente código en un plugin de fragmentos de código o en el archivo functions.php de tu tema:

function wpb_list_child_pages() { 
 
global $post; 
 
if ( is_page() && $post->post_parent )
 
    $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' );
else
    $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );
 
if ( $childpages ) {
 
    $string = '<ul class="wpb_page_list">' . $childpages . '</ul>';
}
 
return $string;
 
}
 
add_shortcode('wpb_childpages', 'wpb_list_child_pages');

En WPBeginner, siempre recomendamos agregar código en WordPress con el plugin WPCode.

WPCode te permite agregar fácilmente código personalizado sin editar los archivos de tu tema, por lo que no tienes que preocuparte por romper tu sitio.

WPCode

Primero, necesitas instalar y activar el plugin gratuito WPCode. Para obtener instrucciones paso a paso, consulta esta guía sobre cómo instalar un plugin de WordPress.

Una vez que el plugin esté activado, navega a Fragmentos de código » Agregar fragmento desde tu panel de WordPress.

Desde ahí, coloca el cursor sobre la opción ‘Add Your Custom Code (New Snippet)’ y haz clic en el botón ‘Add Custom Snippet’.

Agregar un nuevo fragmento de código personalizado en WPCode

Luego, debes elegir ‘Fragmento de PHP’ como tipo de código de la lista de opciones que aparecen en la pantalla.

Seleccionar fragmento de PHP como tipo de código

A continuación, agrega un título para tu fragmento, que puede ser cualquier cosa para ayudarte a recordar para qué es el código.

Ahora, simplemente pega el código de arriba en el cuadro ‘Code Preview’.

Pega el código en el cuadro de Vista previa del código

Después de eso, simplemente cambia el interruptor de ‘Inactive’ a ‘Active’ y haz clic en el botón ‘Save Snippet’ en la parte superior de la página.

Activa y guarda tu fragmento de código personalizado

Este código primero verifica si una página tiene una página principal o si la página en sí es una página principal.

Si es una página principal, entonces muestra las páginas secundarias asociadas a ella. Si es una página secundaria, entonces muestra todas las demás páginas secundarias de su página principal.

Por último, si esta es solo una página sin página secundaria o principal, el código simplemente no hará nada. En la última línea del código, hemos agregado un shortcode, para que puedas mostrar fácilmente las páginas secundarias sin modificar las plantillas de tu página.

Para mostrar páginas secundarias, simplemente agrega el siguiente shortcode en una página o widget de texto en la barra lateral:

[wpb_childpages]

No olvides guardar tus cambios y previsualizarlos en una pestaña del navegador. Así es como aparece en nuestro sitio de prueba.

Lista de enlaces simple

Ahora puedes estilizar esta lista de páginas usando algo de CSS personalizado.

Aquí tienes un código CSS de ejemplo que puedes usar como punto de partida:

ul.wpb_page_list {
    list-style: none;
    list-style-type: none;
    background-color: #eee;
    border: 1px solid #CCC;
    padding: 20px;
}

Método 3. Mostrar páginas secundarias dinámicamente sin ningún shortcode

Usar shortcodes es conveniente, pero el problema con ellos es que tendrás que agregar shortcodes en todas las páginas que tengan páginas principales o secundarias.

Puedes terminar teniendo shortcodes en muchas páginas, y a veces incluso puedes olvidar agregarlo.

Un mejor enfoque sería editar el archivo de plantilla de página en tu tema, para que pueda mostrar automáticamente las páginas secundarias.

Para hacer eso, necesitas editar la plantilla principal page.php, o crear una plantilla de página personalizada en tu tema.

Puedes editar tu tema principal, pero esos cambios desaparecerán si cambias o actualizas tu tema. Por eso sería mejor si crearas un tema hijo y luego hicieras tus cambios en el tema hijo.

En tu archivo de plantilla de página, necesitas agregar esta línea de código donde quieras mostrar las páginas hijas.

<?php wpb_list_child_pages(); ?>

Eso es todo. Tu tema ahora detectará automáticamente las páginas hijas y las mostrará en una lista simple.

Puedes personalizar los estilos con CSS y formato.

Aquí tienes un ejemplo de cómo el sitio web de OptinMonster muestra la página principal y las subpáginas:

Ejemplo de páginas secundarias de OptinMonster

Esperamos que este artículo te haya ayudado a listar las páginas secundarias de una página principal en WordPress. También te puede interesar nuestra guía sobre las páginas más importantes para crear en un nuevo sitio web de WordPress, y nuestra comparación de los mejores constructores de páginas de WordPress de arrastrar y soltar para crear diseños personalizados sin código.

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

80 CommentsLeave a Reply

  1. Para las páginas de tercer nivel (nietos), quiero mostrar el mismo menú que se ve en las páginas hijas (todos los enlaces hijos del padre). Con este fragmento, cuando estoy en una página nieta, solo veo las otras páginas nietas en el menú. ¿Cómo necesitaría modificarse este código para mostrar todos los enlaces hijos incluso cuando se está en páginas nietas?

  2. Soy relativamente nuevo en el blogging y recientemente cambié al tema Kale de Wordpress. He estado tratando de hacer páginas de atributos de página (bajo la página principal Recetas) para poder tener categorías separadas para aperitivos, postres, etc. Todo parece funcionar en la parte de administración, pero luego en el sitio mismo no hay atributos de página/menú desplegable de la categoría Recetas. ¿Qué estoy haciendo mal? Todo está configurado como público, así que no estoy seguro de cuál es el problema.

  3. Gracias por este código. Pero no quiero que esto se muestre en la página de inicio (página estática), solo en las páginas principales. ¿Cómo se puede hacer?

    Gracias.

  4. Estoy usando el tema Generatepress (creé un tema hijo a partir de él para personalizarlo) y no puedo hacer que esto funcione. El shortcode se muestra en la página de salida, parece que ni siquiera se reconoce como un shortcode. Uso widgets de Elementor y ni los widgets de texto ni los de shortcode funcionan.

    ¿Alguna idea de cómo hacerlo funcionar cuando se usan widgets de Elementor?

  5. ¡un gran post, es exactamente lo que estoy buscando desde hace muchas horas! y funciona de maravilla, solo agregando el código en el function.php del tema y luego agregando el shortcode en la página donde quiero que aparezcan las subpáginas, ¡y voilà!
    maravilloso, ¡muchas gracias por tu generosidad!!

  6. Como con tantos fragmentos que encontramos, uno tiene que revisar todos los comentarios para que funcione. ¿Qué tiene de malo probar lo que escribes?

  7. Usar este código termina mostrando la página padre junto con las páginas hijo, lo cual es redundante. Según entiendo, lo que realmente necesitamos es mostrar solo las páginas hijo, no la página padre. ¿Alguna modificación sugerida que pueda hacer esto?

  8. En la actualización de plugins, por alguna extraña razón siempre obtengo un error:

    Fatal error: Cannot redeclare wpb_list_child_pages() (previously declared in …/wp-content/themes/pagelines/functions.php:25) in …/wp-content/themes/pagelines/functions.php on line 34

  9. Hola, gran artículo,
    ¿Me puedes ayudar a crear un menú desplegable de páginas secundarias en una página principal? Necesito esta funcionalidad para uno de mis proyectos de WordPress y soy completamente nuevo en WordPress.

  10. ¿Soy el único que no puede hacer que funcione?

    Tengo la siguiente estructura

    Acerca de
    — Página 1
    — Página 2
    — Página 3

    Cuando estoy en "Acerca de" o en una página hija (1, 2 o 3), me gustaría tener una lista con mi página principal (Acerca de) y todos los hijos (1, 2, 3) – ¿Alguien ha logrado que funcione?

    Thanks! :)

    • ¡Oh Dios mío, lo siento, esto es molesto! Ignora mis otras publicaciones. No me di cuenta de que no se podía pegar código en los comentarios.

      NO pude hacer que funcionara con wpb_list_child_pages();

      SÍ pude hacer que funcionara con echo do_shortcode( '[wpb_childpages]')

      Y para obtener el título de la página principal, inserté esto encima de la lista de páginas secundarias:
      $current = $post->ID;

      $parent = $post->post_parent;

      $grandparent_get = get_post($parent);

      $grandparent = $grandparent_get->post_parent;

      PHP if ($root_parent = get_the_title($grandparent) !== $root_parent = get_the_title($current)) {echo get_the_title($grandparent); }else {echo get_the_title($parent);

  11. Estoy usando este código y funciona muy bien. ¿Es posible mostrar también categorías en los menús junto con las páginas?

  12. Hola,

    Quiero hacer lo siguiente

    La página principal debe estar en venta o en alquiler.
    Luego quiero que el hijo, por ejemplo una provincia (Gauteng), se enlace a la página principal de "en venta" y "en alquiler".
    ¿Cómo hago eso?

    Michelle

  13. ¿Cómo puedo crear un shortcode con un parámetro, por ejemplo, [wpb_childpages id=”1″], donde id=”1″ es el id de la página principal?

  14. Gracias,

    ¿Podría explicar, por favor, cómo puedo organizar las páginas secundarias en una lista desplegable a la que se pueda acceder a través de la página principal? (No quiero que los visitantes puedan ver todas las páginas secundarias en forma de blogroll).

    Es decir, en la página principal quiero crear una lista desplegable (listbox) a la que se añadirían las páginas secundarias en un orden predefinido (digamos en orden alfabético). Después de leer Introducción, un visitante puede continuar eligiendo cualquier página de la lista a su antojo (las páginas secundarias no tienen conexión lógica, por lo que en cualquier caso buscará la página exacta).

    ¿Es realizable 'mi sueño'?

    Gracias de nuevo.

  15. Hola equipo de WPBeginner,

    Usé el código que proporcionaron con la “opción de shortcode” y funcionó (enlaces a páginas secundarias). Sin embargo, quería usar la opción permanente, y eso no funcionó.

    Cuando agregué esta línea de código [ ] la página principal devuelve un error 500 y no se muestran páginas secundarias en absoluto.

    ¿Qué estoy haciendo mal?

    De paso, si quisiera mostrar un extracto con su respectiva imagen, ¿cómo lo haría? ¡Gracias!

    • Pude resolver esto.

      Agregué el fragmento de código y luego agregué este shortcode [wpb_childpages] a la página principal donde quería que se mostraran las páginas secundarias. ¡Impresionante!

      Ahora, para mostrar extractos y una imagen, ¿usaría las mismas consultas, al igual que las publicaciones de una categoría?

      Thanks in advance :)

      • Hola, me preguntaba a qué te referías con ‘consulta’. ¿Cómo obtuviste exactamente los extractos y las imágenes para que se mostraran en la página principal?

        ¡Gracias!

  16. ¿Alguien podría confirmar si la página de ejemplo utilizada en este tutorial http://optinmonster.com/how-it-works/ utiliza esta función o no? Me parece que usan pestañas, en lugar de páginas secundarias.

    Si estoy en lo correcto, ¿alguien podría dirigirme a un recurso para obtener esa función, ya que estoy buscando desesperadamente una solución fluida como la que tienen en esa página?

    Muchas gracias,

    Pradeep

  17. Para la opción que no es de código corto, podrías querer informar a los usuarios que necesitan cambiar return $string; por echo $string; o incluir en la plantilla de su página la función echo page_list_child_pages();

    Gracias a Erik por señalar esto anteriormente

  18. Hola, puedo hacer que esto funcione cuando visito mi dominio con un subdirectorio (por ejemplo, example.com/home), pero cuando veo el sitio sin esto (example.com), la lista de páginas secundarias no aparece. ¿Alguien puede indicarme dónde me estoy equivocando?

    Gracias de antemano – soy muy nuevo en Wordpress.

  19. ¿Cómo haces para que esta función muestre la página principal en la parte superior de la lista junto con la lista de páginas secundarias y de nietas? En las páginas secundarias no se muestra la página principal.

  20. ¿Existe ahora un plugin que pueda hacer lo mismo?

    y también, ¿podemos decidir dónde irá el cuadro con las páginas de submenús en cualquier área de la página, no solo en la parte superior? Usando un plugin

  21. Sí, se puede usar para tipos de publicación personalizados. Como esto:


    function wpb_list_child_pages() {

    global $post;

    if ( 'movie' == get_post_type() && $post->post_parent )

    $childpages = wp_list_pages( 'post_type=movie&sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' );
    else
    $childpages = wp_list_pages( 'post_type=movie&sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );

    if ( $childpages ) {

    $string = '' . $childpages . '';
    }

    return $string;

    }

    add_shortcode('wpb_childpages', 'wpb_list_child_pages');

  22. ¡Esto es genial! ¿Hay alguna forma de hacer lo mismo para Tipos de Publicación Personalizados que tienen publicaciones hijas?

  23. ¿Hay alguna forma de modificar esto para imprimir las publicaciones hijas de un tipo de publicación personalizado en una página de publicación de tipo de publicación personalizado? ¡Gracias, es muy útil!

  24. ¡Es genial para mí! De todos modos, me gustaría saber cómo puedo mostrar el título y la miniatura de la página hija en la página principal.

    • Hola, tengo la misma consulta. Me gusta mucho cómo está estilizada la lista en la página Beginners Blueprint, pero no tengo idea de por dónde empezar. ¿Alguien puede recomendar un artículo para leer o dar algún consejo, gracias?

  25. Hay un error en las páginas que no tienen páginas hijas, así que he modificado ligeramente
    if( count($childpages) != 0 ) {
    $string = ” . $childpages . ”;
    }

    en lugar de
    if( $childpages ){
    $string = ” . $childpages . ”;
    }

  26. Agregué el código a functions.php y cuando agrego el shortcode [wpb_childpages] en mi texto, funciona. Pero cuando intento agregarlo a una de mis plantillas, no muestra nada. ¿Alguien sabe qué estoy haciendo mal?

  27. ¿Puedes decirnos cómo detener la lista en el primer nivel? Me gustaría mostrar todas las subpáginas de ese padre, pero no los hijos de las subpáginas. Gracias.

  28. Genial. Me encanta esta idea de un plugin de sitio y ver el código que estás agregando (para que sepas que está limpio y no hace cosas malas) en lugar de depender de algún plugin que podría estar instalando cualquier cosa.

    Para algo tan simple como listar páginas hijas, estoy de acuerdo en que debería ser parte de un plugin más grande en lugar de solo un plugin, de lo contrario, terminas con tantos plugins que es difícil hacer un seguimiento.

  29. This is great. I had a page on my website called “Services” and was manually linking the sub-pages, but not any more. Awesome. Thanks for this tip. Worked like a charm and did exactly what I was doing manually. :)

  30. ¡Esto es genial! Ponerlo en un plugin es una gran característica y una gran oportunidad para extender la funcionalidad agregando:
    – imagen destacada de página hija (como miniatura)
    – Título de página hija
    – el resto de los metadatos (autor, fecha, número de comentarios)
    – estilo en columnas quizás
    y así sucesivamente

    De esta manera, tendríamos un plugin de Portafolio casi completo: portafolios hechos de Páginas en lugar de solo de tipos de publicación personalizados.

    Gracias..

  31. ¡Esto es genial! Tengo muchos enlaces añadidos manualmente a páginas secundarias, y esto hará que el mantenimiento de nuestro sitio sea MUCHO más fácil. Acabo de estar probando en mi entorno de desarrollo, y me gustaría ajustar un poco la función, de modo que en una página secundaria, cuando se incluya el shortcode, se listen todos los hijos del mismo padre, EXCEPTO la página que se está mostrando actualmente. Realmente todavía estoy aprendiendo PHP, así que mientras intentaré resolver esto por mi cuenta, agradecería cualquier ayuda para hacer ese cambio en el código.

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.