Como Exibir uma Lista de Páginas Filhas de uma Página Mãe no WordPress

Recentemente, um de nossos leitores nos perguntou como exibir páginas filhas de uma página do WordPress? É uma pergunta que recebemos com bastante frequência no WPBeginner, e ela destaca uma necessidade comum de melhorar a navegação do site e a experiência do usuário. 

Se você organiza seu site WordPress com páginas pai e filhas, talvez queira exibir suas páginas filhas ou subpáginas na página pai principal. Isso ajuda os usuários a verem facilmente todas as informações disponíveis em uma seção específica e a navegarem rapidamente para tópicos relacionados.

Você também pode querer mostrar o link da página pai principal em cada subpágina para facilitar a navegação, criando um efeito semelhante a um breadcrumb. Essa navegação simplificada impede que os usuários se percam nas profundezas do seu site e aprimora a experiência geral de navegação deles.

Neste artigo, mostraremos como exibir facilmente uma lista de páginas filhas para uma página pai no WordPress.

Exibindo uma lista de páginas filhas para uma página pai no WordPress

Quando você precisa mostrar uma lista de páginas filhas?

O WordPress vem com dois tipos de postagem padrão chamados posts e páginas. Posts são conteúdo de blog e geralmente são organizados com categorias e tags.

Páginas são conteúdos únicos ou independentes que são perenes, como uma página 'Sobre nós' ou uma página 'Fale conosco', por exemplo.

No WordPress, as páginas podem ser hierárquicas, o que significa que você pode organizá-las com páginas pai e filhas. Por exemplo, você pode querer criar uma página de Produto com páginas filhas para Recursos, Preços e Suporte.

Para criar uma página filha, siga nosso guia sobre como criar uma página filha no WordPress.

Depois de criar suas páginas pai e filha, você pode querer listar as páginas filhas na página pai principal.

Agora, uma maneira fácil de fazer isso é editando manualmente a página pai e adicionar uma lista de links individualmente.

Adicionar links de páginas filhas manualmente

No entanto, você precisará editar manualmente a página pai toda vez que adicionar ou excluir uma página filha.

Não seria mais agradável se você pudesse simplesmente criar uma página filha e ela aparecesse automaticamente como um link na página pai?

Dito isso, vamos dar uma olhada em outras maneiras dinâmicas de exibir rapidamente uma lista de páginas filhas na página pai no WordPress. Mostraremos três métodos, para que você possa escolher o que for melhor para você:

Método 1. Exibir Páginas Filhas na Página Pai usando um Plugin

Este método é a maneira mais fácil de exibir páginas filhas em uma página pai e é recomendado para todos os usuários.

Primeiro, você precisa instalar e ativar o plugin Page-list. Para mais detalhes, veja nosso guia passo a passo sobre como instalar um plugin do WordPress.

Após a ativação, você precisa editar a página pai e simplesmente adicionar o seguinte shortcode onde você deseja exibir a lista de páginas filhas.

[subpages]

Agora você pode salvar sua página e visualizá-la em uma nova aba do navegador. Você notará que ela exibe uma lista simples com marcadores de todas as páginas filhas.

Lista simples de links de páginas filhas

Se desejar, você pode adicionar um CSS personalizado para alterar a aparência da lista.

Aqui estão alguns exemplos de CSS que você pode usar como ponto de partida.

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

Após aplicar seu CSS personalizado, você pode visualizar a página pai.

Veja como ficou em nosso site WordPress de teste:

Lista de páginas filhas com CSS

O plugin fornece vários parâmetros de shortcode que permitem definir a profundidade, excluir páginas, o número de itens e muito mais.

Para mais detalhes, por favor veja a página do plugin para documentação detalhada.

Método 2. Listar Páginas Filhas de uma Página Pai usando Código

Este método é um pouco avançado e requer que você adicione código ao seu site WordPress. Se você nunca fez isso antes, por favor, dê uma olhada em nosso guia sobre como copiar e colar código no WordPress.

Para listar páginas filhas sob uma página pai, você precisa adicionar o seguinte código em um plugin de snippets de código ou no arquivo functions.php do seu 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');

Na WPBeginner, sempre recomendamos adicionar código no WordPress com o plugin WPCode.

O WPCode permite que você adicione facilmente código personalizado sem editar os arquivos do seu tema, para que você não precise se preocupar em quebrar seu site.

WPCode

Primeiro, você precisa instalar e ativar o plugin gratuito WPCode. Para instruções passo a passo, veja este guia sobre como instalar um plugin do WordPress.

Uma vez que o plugin esteja ativado, navegue até Code Snippets » Add Snippet no seu painel do WordPress.

A partir daí, passe o mouse sobre a opção ‘Adicionar seu código personalizado (Novo trecho)’ e clique no botão ‘Adicionar trecho personalizado’.

Adicionar um novo trecho de código personalizado no WPCode

Em seguida, você precisa escolher ‘Trecho PHP’ como o tipo de código na lista de opções que aparecem na tela.

Selecione Snippet PHP como o tipo de código

Em seguida, adicione um título para o seu snippet, que pode ser qualquer coisa para ajudá-lo a lembrar para que serve o código.

Agora, simplesmente cole o código acima na caixa ‘Visualização do código’.

Cole o código na caixa de pré-visualização de código

Depois disso, basta alternar o interruptor de ‘Inativo’ para ‘Ativo’ e clicar no botão ‘Salvar trecho’ na parte superior da página.

Ative e salve seu snippet de código personalizado

Este código primeiro verifica se uma página tem um pai ou se a própria página é um pai.

Se for uma página pai, ele exibe as páginas filhas associadas a ela. Se for uma página filha, ele exibe todas as outras páginas filhas de sua página pai.

Por último, se esta for apenas uma página sem página filha ou pai, o código simplesmente não fará nada. Na última linha do código, adicionamos um shortcode, para que você possa exibir facilmente páginas filhas sem modificar seus modelos de página.

Para exibir páginas filhas, basta adicionar o seguinte shortcode em uma página ou widget de texto na barra lateral:

[wpb_childpages]

Não se esqueça de salvar suas alterações e visualizá-las em uma aba do navegador. É assim que aparece em nosso site de teste.

Lista de links simples

Agora você pode estilizar esta lista de páginas usando algum CSS personalizado.

Aqui está um código CSS de exemplo que você pode usar como ponto 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. Exibir Dinamicamente Páginas Filhas Sem Nenhum Shortcode

Usar shortcodes é conveniente, mas o problema com eles é que você terá que adicionar shortcodes em todas as páginas que têm páginas pai ou filhas.

Você pode acabar tendo shortcodes em muitas páginas e, às vezes, pode até esquecer de adicioná-lo.

Uma abordagem melhor seria editar o arquivo do modelo de página em seu tema, para que ele possa exibir automaticamente as páginas filhas.

Para fazer isso, você precisa editar o template principal page.php, ou criar um template de página personalizado no seu tema.

Você pode editar seu tema principal, mas essas alterações desaparecerão se você mudar ou atualizar seu tema. É por isso que seria melhor se você criasse um tema filho e então fizesse suas alterações no tema filho.

No seu arquivo de template de página, você precisa adicionar esta linha de código onde você deseja exibir as páginas filhas.

<?php wpb_list_child_pages(); ?>

É só isso. Seu tema agora detectará automaticamente as páginas filhas e as exibirá em uma lista simples.

Você pode personalizar os estilos com CSS e formatação.

Aqui está um exemplo de como o site OptinMonster exibe a página pai e as subpáginas:

Exemplo de Subpáginas do OptinMonster

Esperamos que este artigo tenha ajudado você a listar páginas filhas de uma página pai no WordPress. Você também pode querer ver nosso guia sobre as páginas mais importantes para criar em um novo site WordPress, e nossa comparação dos melhores construtores de páginas WordPress de arrastar e soltar para criar layouts personalizados sem nenhum código.

Se você gostou deste artigo, por favor, inscreva-se em nosso Canal do YouTube para tutoriais em vídeo do WordPress. Você também pode nos encontrar no Twitter e no Facebook.

Aviso: Nosso conteúdo é apoiado pelos leitores. Isso significa que, se você clicar em alguns de nossos links, poderemos ganhar uma comissão. Veja como o WPBeginner é financiado, por que isso importa e como você pode nos apoiar. Aqui está nosso processo editorial.

O Kit de Ferramentas Definitivo para WordPress

Obtenha acesso GRATUITO ao nosso kit de ferramentas - uma coleção de produtos e recursos relacionados ao WordPress que todo profissional deve ter!

Interações do Leitor

80 CommentsLeave a Reply

  1. Para páginas de terceiro nível (netos), quero mostrar o mesmo menu que é visto nas páginas filhas (todos os links filhos do pai). Com este trecho, quando em uma página neta, eu só vejo as outras páginas netas no menu. Como este código precisaria ser modificado para mostrar todos os links filhos, mesmo quando em páginas netas?

  2. Sou relativamente novo em blogs e recentemente mudei para o tema Kale Wordpress. Tenho tentado fazer páginas de atributos de página (sob a página pai Receitas) para que eu possa ter categorias separadas para aperitivos, sobremesas, etc. Tudo parece funcionar na parte administrativa, mas depois no próprio site não há atributos de página/menus suspensos da categoria Receitas. O que estou fazendo de errado? Tudo está definido como público, então não tenho certeza qual é o problema.

  3. Obrigado por este código. Mas eu não quero que isso seja mostrado na página inicial (página estática), apenas nas páginas pai. Por favor, como isso pode ser feito?

    Obrigado.

  4. Estou usando o tema Generatepress (criei um tema filho a partir dele para personalização) e não consigo fazer isso funcionar. O shortcode é exibido na página de saída, parece que nem é reconhecido como um shortcode. Eu uso widgets do Elementor e nem os widgets de texto nem de shortcode funcionam.

    Alguma ideia de como fazer funcionar ao usar widgets do Elementor?

  5. um ótimo post, é exatamente o que eu procuro há muitas horas! e funciona como mágica, basta adicionar o código no function.php do tema e depois adicionar o shortcode na página onde quero que as subpáginas apareçam, e voilà!!!
    maravilhoso, muito obrigado pela sua generosidade!!

  6. Como acontece com muitos dos trechos que encontramos, é preciso passar por todos os comentários para que funcione. O que há de errado em testar o que você escreve?

  7. Usar este código acaba exibindo a página pai junto com as páginas filhas, o que é redundante. Pelo que entendi, o que realmente precisamos é exibir apenas as páginas filhas, não a página pai. Alguma modificação sugerida que possa fazer isso?

  8. Na atualização de plugins, por algum motivo estranho, sempre recebo um erro:

    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. Olá ótimo artigo,
    Você pode me ajudar a criar um dropdown de páginas filhas em uma página pai. Preciso dessa funcionalidade para um dos meus projetos wordpress e sou totalmente novato em wordpress.

  10. Sou o único que não consegue fazer funcionar?

    Eu tenho a seguinte estrutura

    Sobre
    — Página 1
    — Página 2
    — Página 3

    Quando estou na página "Sobre" ou em uma página filha (1, 2 ou 3), eu gostaria de ter uma lista com minha página pai (Sobre) e todas as filhas (1, 2, 3) – Alguém conseguiu fazer isso funcionar?

    Thanks! :)

    • OMG, desculpe, isso é irritante. Por favor, ignore minhas outras postagens. Não percebi que você não podia colar código nos comentários.

      Eu NÃO consegui fazer funcionar com wpb_list_child_pages();

      Eu CONSEGUI fazer funcionar com echo do_shortcode( '[wpb_childpages]')

      E para obter o título da página pai, inseri isto acima da lista de páginas filhas:
      $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. Olá,

    Eu quero fazer o seguinte

    A página pai deve ser para venda e/ou para alugar
    Então eu quero que a filha, por exemplo, uma província (Gauteng), se vincule à página pai de "para venda" e à página pai de "para alugar".
    Como faço isso?

    Michelle

  12. Como posso criar um shortcode com um parâmetro, por exemplo, [wpb_childpages id="1"], onde id="1" é o id da página pai?

  13. Olá,

    É possível limitar os links a um número específico, como um máximo de 12 páginas filhas?

    Obrigado

  14. Obrigado,

    Você poderia explicar, por favor, como posso organizar as páginas filhas em uma lista suspensa que seria acessível através da página pai? (Não quero que os visitantes vejam todas as páginas filhas em forma de blogroll.)

    Ou seja, na página pai eu quero criar uma lista suspensa (listbox) para a qual as páginas filhas seriam adicionadas em uma ordem predefinida (digamos, em ordem alfabética). Após ler a Introdução, um visitante pode prosseguir escolhendo qualquer página da lista à sua vontade (as páginas filhas não têm conexão lógica, então em qualquer caso ele procurará a página exata).

    Meu 'sonho' é realizável?

    Obrigado novamente.

  15. Olá Equipe WPBeginner,

    Usei o código que vocês forneceram com a "opção de shortcode" e funcionou (links para páginas filhas). No entanto, eu queria usar a opção permanente, e isso não funcionou.

    Quando adicionei esta linha de código [ ] a página pai retorna um erro 500 e nenhuma página filha é exibida.

    O que estou fazendo de errado?

    Em uma nota lateral, se eu quisesse exibir um trecho com sua respectiva imagem, como eu faria? Obrigado!

    • Eu consegui descobrir isso.

      Adicionei o trecho de código e depois adicionei este shortcode [wpb_childpages] à página pai onde eu queria que as páginas filhas fossem exibidas. Incrível!

      Agora, para exibir trechos e uma imagem, eu usaria as mesmas consultas - assim como posts sob uma categoria.

      Thanks in advance :)

      • Olá, eu estava me perguntando o que você quis dizer com 'query'? Como exatamente você fez os trechos e as imagens serem exibidos na página pai?

        Obrigado!

  16. Alguém poderia confirmar se a página de exemplo usada neste tutorial http://optinmonster.com/how-it-works/ usa este recurso ou não? Para mim, parece que eles estão usando abas, em vez de páginas filhas.

    Se eu estiver certo, alguém poderia me direcionar para um recurso para obter esse recurso, pois estou desesperadamente procurando uma solução fluida como a que eles têm naquela página?

    Muito obrigado,

    Pradeep

  17. Para a opção que não é de shortcode, você pode querer informar aos usuários que eles precisam alterar
    return $string; para
    echo $string; ou
    no template da página deles, usar echo para a função
    echo page_list_child_pages();

    Obrigado a Erik por apontar isso acima

  18. Olá, consigo fazer isso funcionar quando visito meu domínio com um subdiretório (ex: example.com/home), mas ao visualizar o site sem isso (example.com), a lista de subpáginas não é exibida. Alguém pode me indicar onde estou errando?

    Agradeço desde já – muito novo no Wordpress.

  19. Como faço para que esta função exiba a própria página pai no topo da lista, juntamente com a lista de páginas filhas e netas? Nas páginas filhas, ela não lista a página pai.

  20. Existe agora um plugin que pode fazer o mesmo?

    e também podemos decidir onde a caixa com as páginas de submenus irá em qualquer área da página, não apenas no topo da página? Usando um plugin

  21. Sim, pode ser usado para tipos de postagem personalizados. Assim:


    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. Isso é ótimo! Existe uma maneira de fazer o mesmo para Tipos de Postagem Personalizados que têm posts filhos?

  23. Existe uma maneira de modificar isso para imprimir posts filhos de tipos de postagem personalizados em uma página de post de tipo de postagem personalizado? Obrigado, é muito útil!

  24. É muito bom para mim! De qualquer forma, eu gostaria de saber como posso exibir o título e a miniatura da página filha na página pai.

    • Olá, tenho a mesma dúvida. Eu realmente gosto de como a lista é estilizada na página Beginners Blueprint, mas não tenho ideia de como começar. Alguém pode recomendar um artigo para ler ou dar algum conselho, obrigado.

  25. Há um erro nas páginas que não têm páginas filhas, então eu modifiquei ligeiramente
    if( count($childpages) != 0 ) {
    $string = ” . $childpages . ”;
    }

    em vez de
    if( $childpages ){
    $string = ” . $childpages . ”;
    }

  26. Adicionei o código ao functions.php e quando adiciono o shortcode [wpb_childpages] no meu texto, funciona. Mas quando tento adicioná-lo a um dos meus templates, não aparece nada. Alguém sabe o que estou fazendo de errado?

  27. Você pode nos dizer como parar a lista no primeiro nível? Eu gostaria de mostrar todas as subpáginas desse pai, mas não os filhos das subpáginas. Obrigado.

  28. Ótimo. Eu amo essa ideia de um plugin de site e ver o código que você está adicionando (para saber que é limpo e não faz coisas ruins) em vez de depender de algum plugin que poderia estar instalando qualquer coisa.

    Para algo tão simples quanto listar páginas filhas, concordo que deveria fazer parte de um plugin maior em vez de apenas um plugin, caso contrário, você acaba com tantos plugins que é difícil de acompanhar.

  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. Isso é ótimo! Colocá-lo em um plugin é um ótimo recurso e uma ótima oportunidade para estender a funcionalidade adicionando:
    – imagem em destaque da página filha (como miniatura)
    – Título da página filha
    – resto dos metadados (autor, data, contagem de comentários)
    – estilização em colunas talvez
    e assim por diante

    Dessa forma, teríamos um plugin de Portfólio quase completo – portfólios feitos de Páginas em vez de apenas feitos de tipos de postagem personalizados.

    Obrigado..

  31. Olá!
    Obrigado, foi muito útil. Mas se você pudesse mostrar em vídeo, seria muito mais utilizável. Como Tyler Moore faria.
    Obrigado.
    Yousef

  32. Isso é ótimo! Tenho muitos links adicionados manualmente para páginas filhas, e isso vai tornar a manutenção do nosso site MUITO mais fácil. Acabei de testar em meu ambiente de desenvolvimento e gostaria de ajustar um pouco a função, de modo que em uma página filha, quando o shortcode for incluído, todas as filhas do mesmo pai sejam listadas EXCETO a página atualmente exibida. Eu ainda estou aprendendo PHP, então, embora eu tente descobrir isso sozinho, agradeceria qualquer ajuda para fazer essa alteração no código.

Deixe uma resposta

Obrigado por escolher deixar um comentário. Por favor, tenha em mente que todos os comentários são moderados de acordo com nossa política de comentários, e seu endereço de e-mail NÃO será publicado. Por favor, NÃO use palavras-chave no campo do nome. Vamos ter uma conversa pessoal e significativa.