Como Exibir Subcategorias em Páginas de Categoria no WordPress

Na WPBeginner, estamos sempre buscando maneiras mais inteligentes de melhorar a navegação para que nossos leitores possam encontrar facilmente exatamente o que procuram. Uma experiência de navegação fluida mantém os usuários engajados e voltando para mais.

Felizmente, o WordPress oferece uma solução direta, permitindo que você organize suas postagens com categorias e subcategorias. Exibir subcategorias diretamente em suas páginas de categoria pode aumentar significativamente a experiência do usuário e otimizar a navegação em todo o seu site.

Neste artigo, mostraremos como exibir subcategorias em páginas de categoria no WordPress. Forneceremos os trechos de código necessários e instruções passo a passo para tornar a navegação do seu site melhor do que nunca. Vamos começar!

Exibir Subcategorias em Páginas de Categoria no WordPress

Por que exibir subcategorias em páginas de categoria?

Ao escrever postagens para o seu site WordPress, você pode otimizar para mecanismos de busca e melhorar a navegação do site categorizando o conteúdo corretamente. Isso trará mais tráfego para o seu site e permitirá que os visitantes encontrem o conteúdo que procuram com mais facilidade.

Em alguns sites, faz sentido usar subcategorias para simplificar a estrutura do site.

Por exemplo, você pode ter uma categoria de nível superior (pai) chamada Esportes. Você pode então ter subcategorias sob Esportes chamadas NFL, NBA e MLB.

Exemplo de Uso de Subcategorias no WordPress

Quando seus visitantes clicarem na categoria Esportes, eles verão todas as postagens da categoria Esportes e suas subcategorias. No entanto, eles não verão a lista de subcategorias. Isso dificulta a filtragem para ver apenas as postagens da NFL ou NBA.

Exibir uma lista de subcategorias em suas páginas de categoria pode melhorar a navegação do site. Isso é particularmente verdadeiro se você decidir ocultar subcategorias no widget de categoria do seu site.

Mostrar Apenas Categorias de Nível Superior

Então, por exemplo, os visitantes do seu site podem facilmente ir de todas as postagens de Esportes para apenas NFL. Melhor ainda, você pode continuar a exibir as mesmas subcategorias na página da NFL para que eles possam alternar facilmente da NFL para a NBA.

Dito isso, vamos ver como exibir subcategorias em páginas de categoria no WordPress.

Como Exibir Subcategorias em Páginas de Categoria no WordPress

Para exibir subcategorias em suas páginas de arquivo de categoria, você precisará adicionar código aos arquivos do seu tema. Se você precisar de ajuda para adicionar código ao seu site, consulte nosso guia para iniciantes sobre como colar snippets da web no WordPress.

A primeira coisa que você precisa fazer é entrar na pasta do seu tema e procurar o arquivo de arquivo de categoria chamado category.php.

Se você não vir esse arquivo, terá que criá-lo. Simplesmente duplique archive.php e nomeie-o como category.php.

Observação: Se o seu tema não incluir category.php ou archive.php, você provavelmente está usando um framework de tema WordPress e terá que criar category.php manualmente. Um bom ponto de partida para aprender como criar arquivos de arquivo é o nosso guia sobre como criar páginas de arquivo personalizadas no WordPress.

Agora, basta adicionar o seguinte código ao category.php logo antes do 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 } ?>
Adicione o Snippet de Código ao category.php Logo Antes do Loop

Agora, ao visitar uma página de categoria, você verá uma lista de subcategorias.

Em nosso site de demonstração, a página da categoria Esportes mostra links para as subcategorias NFL, NBA e MLB.

Visualização de Subcategorias na Página da Categoria

Ao clicar no link NFL, você é levado para a página da subcategoria NFL.

Aqui você ainda pode ver os links para as subcategorias de Esportes, para que possa alternar facilmente entre os diferentes tipos de esportes. Isso pode realmente simplificar a navegação em seu site.

Prévia de Subcategorias na Página de Subcategoria

Guias de Especialistas sobre Categorias e Subcategorias no WordPress

Esperamos que este tutorial tenha ajudado você a aprender como exibir subcategorias em páginas de categoria no WordPress. Você também pode querer ver outros guias relacionados à exibição de categorias e subcategorias no WordPress:

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

73 CommentsLeave a Reply

  1. Olá,

    Eu uso um tema que não contém o arquivo category.php. Categorias e posts são exibidos através de um archive.php, que está localizado em um framework de plugin que vem junto com este tema.

    • Este é um problema que muitas pessoas encontram quando não olham atentamente para o que o tema delas oferece. Eu recomendaria escolher um tema diferente e, desta vez, procurar por categorias com camadas, tags, menus modificáveis, editor de blocos e responsividade móvel. Muitos existem gratuitamente que fornecem essas funções básicas. É muito mais fácil seguir em frente e continuar a aprimorar seu site usando um tema que suporte a flexibilidade que você procura, em vez de ajustar um tema que não atende às suas necessidades de imediato. Você ficará ajustando continuamente no futuro, e isso não é divertido, acredite em mim!!

      Este site tem posts sobre temas responsivos e os recursos que eles oferecem e, depois de escolher um tema melhor, aqui está o link para trocá-lo. É um processo muito simples.
      https://www.wpbeginner.com/beginners-guide/how-to-properly-change-a-wordpress-theme/

  2. Colei este código no meu arquivo category.php, mas quando vou para meusite.com/category, ele não está aparecendo. Alguma sugestão?

    • Você deve garantir que o código esteja antes do loop no seu category.php e, se estiver colocado lá corretamente, você deve verificar com o suporte do seu tema específico para ver se eles têm algo que possa substituir a exibição usual.

      Admin

  3. Inseri este código através do plugin Code Snippets, que funcionou com sucesso na inserção de outros códigos, mas agora tenho o que descobri ser chamado de 'tela branca da morte'! Mesmo na página do meu site que termina em /wp-admin.

    Alguém sabe como consertar isso quando não consigo ver meu painel de administrador?

  4. este código não funciona exatamente como eu quero, eu quero um arranjo adequado de categorias como navegação.
    Categoria pai
    Neto 1
    Neto 2
    subneto 1
    Categorias irmãs

  5. Olá,

    Como podemos usar isso para taxonomia de postagem personalizada criada?

    Quero listar as categorias principais primeiro, depois as subcategorias e sub etc.. até chegar às páginas de postagem?

    Podemos alterar este código para categorias de postagens personalizadas?

    Obrigado

  6. Mas, para não ocultar a Categoria Pai, quando clico na página da subcategoria. Quero mostrar todas as subcategorias na categoria Pai, bem como na subcategoria também.

  7. Obrigado por este ótimo post. Consegui criar um filtro para minha página de categoria com este código. Mas eu gostaria de ter um link para mostrar todos os posts na categoria principal; se você clicou em um dos links de filtro de subcategoria e quer voltar para ver todos os posts da categoria principal. Algo como isto:
    Tudo (20) Subcategoria 1 (12) Subcategoria 2 (5). Subcategoria 3 (3)

    Isso é possível? E como posso obter o número como parte do link?

  8. Olá

    Eu não sei nada sobre codificação. Eu realmente gostaria de adicionar subcategorias ao meu blog WordPress para que eu possa organizar melhor meu conteúdo. Onde devo colar este código para fazê-lo funcionar? O que exatamente acontecerá. Eu gostaria de entender isso um pouco mais, por favor, se você puder ajudar.

  9. Eu sei que este é um post antigo, mas é exatamente o que eu preciso para um projeto atual.
    Existe alguma maneira de ter uma imagem exibida com a categoria.
    Eu usei este plugin no passado para adicionar uma imagem a uma categoria – Categories Images

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

    Eu só não tenho certeza de como implementá-lo com o seu código.

  10. Olá,

    Obrigado pelo código.

    Eu tenho uma Estrutura de Categoria como:

    Categoria Principal: Reforma do Lar
    Subcategoria: Telhados
    Subcategoria de Nível Inferior: Calhas

    Nesta página: Eu quero mostrar todas as categorias filhas, o que é bom, ele exibe todas.

    Nesta página: Eu quero mostrar todas as categorias netas, mas ele mostra todas as categorias filhas.

    Nesta página: Não quero mostrar nada, pois esta é a última

    Por favor, me diga como consertar isso.

    Eu usei seu código assim:

    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. Me chame de estúpido, mas onde colocamos este código, em header.php, index.php. functions.php?

    Para sua informação, tenho uma página onde eles clicam em uma imagem na página principal e ela os leva (atualmente) para uma categoria principal.

    Meu objetivo é que, quando eles clicarem na imagem, ela os leve para uma página listando as subcategorias da categoria, isso permitirá a ordenação das postagens!

  12. é possível exibir postagens em páginas de categoria por subcategoria usando isso?

    Exemplo:

    ** Página da Categoria Principal **

    ** Subcategoria #1 **
    – Post #1
    – Post #2

    ** Subcategoria #2 **
    – Post #3
    – Post #4

  13. Desde o wp 4.0 recebo o seguinte erro se o debug estiver ativado:

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

    Este é o erro em holandês, em inglês diz que está obsoleto. Como o código pode ser ajustado para funcionar com o novo padrão?

  14. Obrigado por isso, mas mudar o argumento orderby não parece ter nenhum impacto na ordem exibida. Mais alguém teve um problema semelhante? Alguma solução?

  15. Obrigado por este post útil.
    Preciso excluir algumas das categorias, para que elas não apareçam. Como posso fazer isso?

  16. Olá

    Preciso de ajuda com o script acima. Tenho uma lista de categorias de países como EUA, Reino Unido, Itália, França, etc. e cada país terá cidades como subcategorias.
    Este script funciona muito bem, quando clico em Itália as subcategorias de cidades aparecem na barra lateral, no entanto quando clico em uma página ou dentro de um post as cidades desaparecem e mostram apenas o país na barra lateral.
    Como posso modificar para que, ao clicar em um post, as cidades permaneçam e, ao clicar em uma página como Sobre ou Início, as cidades desapareçam? Também uso o tema Hueman e precisarei que as cidades apareçam no menu do cabeçalho. Quanto você cobra por isso? Envie um e-mail para kid_punky @ yahoo.com

  17. Estou usando o plugin jigoshop para um site de e-commerce de roupas
    na adição de categoria do jigoshop
    HOMEM
    MULHER
    MENINOS
    OUTRO
    também tem subcategoria
    quero exibir a categoria principal na barra lateral e, ao clicar na categoria, a subcategoria deve ser exibida;

    • Mitul, para CSS você pode visualizá-lo na origem, sinta-se à vontade para brincar com ele. Você pode usar tags condicionais em seu template para mostrar suas subcategorias de forma diferente ou pode criar um novo template para a subcategoria.

      Admin

  18. Olá,
    Eu uso seu código com sucesso, e obrigado por isso.
    Tenho um pequeno problema: removi “depth=”1″ do código, mas a categoria principal não aparece na barra lateral. Apenas subcategorias.
    Como posso exibir tanto a categoria pai quanto as subcategorias?
    Obrigado.

  19. Olá. Isso funcionará com o WordPress 3.3.1?

    Além disso, esta pergunta pode parecer boba, mas quero verificar:

    Este código permitirá que subcategorias específicas da página de categoria em que você está apareçam na barra lateral, correto? Em outras palavras: estou na página inicial. Clico na navegação principal que diz “Illinois”. Isso me leva a uma página de arquivo (categoria) para Illinois, que tem uma barra lateral. Nessa barra lateral estão: Chicago, Evanston, Skokie (subcategorias). Agora, se eu clicasse em “New York” na navegação principal, eu iria para uma página de arquivo (categoria) para New York, e na coluna da direita para essa página estariam: NYC, Albany, Buffalo, Rochester.

    Estou correto, ou estou entendendo mal a aplicação?

    Muito obrigado!

  20. o comentário não foi postado corretamente… então estou colocando-o novamente:

    Categoria Principal

    Sub-categoria-1, Sub-categoria-2, Sub-categoria-3, Sub-categoria-4, Sub-categoria-5,

    Sub-categoria-6, Sub-categoria-7, e assim por diante ………….

  21. Quero mostrar uma lista de subcategorias na página de arquivo da categoria principal, por exemplo:

    <Categoria Principal>

    <sub-categoria-1>, <sub-categoria-2>, <sub-categoria-3>, <sub-categoria-4>, <sub-categoria-5>, <sub-categoria-6>, e assim por diante…

    Copiei o mesmo código fornecido neste artigo, mas não está funcionando… nada está sendo exibido na página da categoria.

    Por favor, ajude.

  22. Olá, espero que haja uma solução para o que estou tentando fazer, pois não consigo encontrar uma solução em lugar nenhum.

    O que eu tenho são várias subcategorias sob uma categoria principal. mas as categorias de segundo nível não são categorias filhas da principal. apenas as subcategorias sob o segundo nível são filhas. mas ainda quero conter o loop dessas categorias na categoria principal, mas essencialmente ela nunca terá uma postagem nem uma filha. Consegui encontrar o filtro para exibir um loop das categorias abaixo dela, mas a página só aparece se houver uma postagem nessa categoria…

    LOL, tudo isso parece bastante complicado quando digo em voz alta haha… Espero que você entenda o que estou falando.

    Em resumo, quero que a página da categoria seja exibida mesmo sem nenhuma postagem nela. Estou usando um tema personalizado e arquivos de modelo para cada categoria.

    Hope someone has the answer. :)

    Abraços

    • @robolist Qual o sentido de ter uma categoria sem postagens nela? Parece que nem deveria estar lá. Talvez você queira elaborar, para que possamos ver o que você está fazendo com essa categoria. Talvez uma rota alternativa deva ser tomada.

      • @wpbeginner thanks for getting back so fast :)

        ok então o motivo é porque eu não quero que a categoria principal apareça na estrutura da URL. embora a URL final para a postagem seja diferente. A categoria principal será algo como 'destinos' e, em seguida, abaixo dela, haverá países. com cada país tendo uma cidade filha e, em seguida, postagens sob a cidade. então o menu principal exibirá 'destinos' com um loop de todas as postagens abaixo dele. então, abaixo disso, no submenu, estará o país e, em seguida, a cidade. com o país e a cidade contendo um loop de suas respectivas postagens. então, quando você chegar à página de destino da cidade, não quero que a URL seja '.com/destinos/país/cidade/' eu quero que seja '.com/país/cidade/'

        Você vê meu dilema?

        • @robolist Parece que há uma maneira melhor. Não faria mais sentido eliminar completamente a categoria de destino. Crie uma página chamada Destinos – use um modelo de página personalizado para que ela exiba todas as categorias que o WordPress tem usando a função wp_list_categories(). Agora você ainda terá as URLs como .com/país/cidade/ E quando o usuário for a uma página como .com/destinos/ << Eles ainda poderão ver todos os países listados lá. Isso faz sentido? Se não, talvez não entendamos o que você está tentando fazer.

        • @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…

          obrigado também por todos os seus tutoriais incríveis neste site...

        • @robolist wp_list_categories() é uma função muito simples e poderosa. http://codex.wordpress.org/Template_Tags/wp_list_categoriesIt permitirá que você exiba suas categorias em qualquer lugar em um modelo de página personalizado. https://www.wpbeginner.com/wp-themes/how-to-create-a-custom-page-in-wordpress/ Então, crie um modelo de página personalizado. Na área do modelo, cole o código wp_list_categories(); Certifique-se de definir child=0 se você não quiser mostrar suas cidades lá. Como presumo, você só vai querer exibir os países lá. Então, uma vez que um usuário clica em um país, ele vai e vê todas as cidades. Estilize-o ao seu gosto e pronto.

        • @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 :)

          Meu post final está agora no final de uma estrutura de categoria de três níveis, ‘continente/país/cidade/post/’ (destinos, como você recomendou, agora é uma página). Mas para o URL final do post, eu não quero que ele seja quatro níveis de profundidade e prefiro que seja apenas três níveis de profundidade. então o permalink que eu gostaria é país/cidade/post/… Existe alguma maneira de remover a categoria pai de nível superior da estrutura de permalink? no momento eu tenho configurado assim ‘/%category%/%postname%-%post_id%/’ Mas ele pega automaticamente todas as categorias pai. , Eu tenho que fazer novamente a categoria superior uma página ou há uma maneira melhor de contornar isso? Muito obrigado antecipadamente pela sua ajuda

          Abraços

        • @robolist Você pode escrever algumas regras de reescrita de permalink, mas isso é um pouco mais difícil do que fazer a categoria principal ser uma página. Solução fácil: faça o continente ser uma página. Solução difícil: regra de reescrita de permalink. Honestamente, você precisa de continentes? a maioria das pessoas não procura por América do Norte ou América do Sul... Elas apenas procuram por países...

        • @wpbeginner Obrigado por retornar.

          Bem, ter os continentes ajuda a organizar o blog, pois ele eventualmente ficará bem grande, é mais como regiões mesmo, não exatamente continentes, por isso eu preferiria incluí-los. Eu adoraria aprender a fazer a regra de reescrita, porque assim não terei que adicionar constantemente IDs de categoria extras às páginas de região toda vez que uma nova cidade/país for adicionada. A forma como configurei com os destinos é perfeita porque nunca adicionarei mais regiões, então nunca mais terei que mexer naquela página :) como está, são 9 regiões, é isso, mas países e cidades serão adicionados ao longo do tempo

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

          Muito obrigado por toda a sua ajuda até agora

        • @robolist A reescrita requer a escrita de códigos personalizados e isso é algo pelo qual cobramos. Você pode procurar no Google para se guiar ou olhar no núcleo do WordPress se você gosta de lidar com 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 :)

  23. Você conseguiu isso? Estou tentando fazer a mesma coisa agora. Mostrar apenas subcategorias em páginas de categoria se houver subcategorias. Aquela coisa de "Sem categorias" está me matando.

  24. Oi! Desculpe pelo meu inglês.

    Eu gostaria de usar seu código, mas não na barra lateral. Quando clico em uma categoria principal, eu gostaria de encontrar na barra de navegação o submenu em vez do menu principal.

    Desculpe, mas não sou um desenvolvedor, onde devo colar seu código?

    In category.php ? :(

    Obrigado

  25. O código não está finalizado.

    «…
    if ($this_category) {
    //Deve haver um código
    //para mostrar a lista de subcategorias.
    }?>
    …»

    Algo assim:
    if ($this_category) {
    printf( $this_category );
    }

    P.S. trabalhando em «Twenty Ten» 3.0.1

  26. Ouvi dizer que este código não funciona mais desde a atualização do WP. Eu também recebi um erro de análise.

  27. Oi,
    Este código é exatamente o que eu preciso, só que quero usá-lo na seção de conteúdo do category.php, não na barra lateral. De qualquer forma, eu o colei e recebo um erro de análise. Falta alguma coisa no final do trecho de código?
    Obrigada.
    -Rachel

  28. Este é um ótimo ponto de partida para mim, pois eu estava procurando por isso em todos os lugares.

    Eu me perguntei se havia uma maneira de elaborar sobre isso e permitir, digamos, 1 título de post e resumo, então 4 títulos adicionais de cada subcategoria, exibidos em uma 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

  29. Olá, muito obrigado por este código e ele está funcionando no meu template. Como eu poderia impedir que todo este código fosse executado se uma categoria NÃO tiver filhos? Se não houver filhos, ele cria uma lista vazia e imprime o texto “Nenhuma Categoria.” Foi assim que eu o configurei com o código do Yoast:

    cat_ID) != "") { ?>

    Subcategorias:
    cat_ID);?>



    Se não houvesse subcategorias, nada apareceria. Seu código é melhor, mas eu preciso que ele apareça SOMENTE se houver subcategorias. Como eu conseguiria isso? Obrigado por qualquer sugestão.

  30. Olá,

    Estou tentando realizar isso na barra lateral, apenas em vez de links, quero listar posts recentes em subcategorias.

    e é claro, isso ocorreria em todas as páginas de categoria e subcategoria, bem como em posts individuais.

    Não sei se isso é possível. Mas, tenho procurado loucamente, e não ser programador também não ajuda.

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.