Como Exibir Apenas a Categoria Filha no Loop de Postagens do Seu WordPress

Em nossa experiência, se você adicionar muitas categorias aos seus posts do WordPress, as coisas podem começar a parecer um pouco lotadas. Múltiplas categorias, especialmente categorias pai e filha, podem poluir seus layouts e dificultar que os leitores encontrem o que procuram.

Não seria mais limpo exibir apenas a categoria filha para cada post?

Este guia mostrará como ajustar o arquivo do seu tema WordPress para exibir apenas categorias filhas em seu loop de posts, dando ao seu blog uma sensação mais simplificada e amigável.

Exibindo apenas subcategorias no loop de posts do WordPress

Por que Exibir Apenas a Categoria Filha em Seu Loop de Posts do WordPress?

Ao criar um blog WordPress, você pode organizar seu conteúdo usando categorias e tags.

Para ajudar os leitores a encontrar conteúdo interessante mais rapidamente, você pode até criar categorias filhas (ou subcategorias).

Por exemplo, se você tem um blog de viagens, então você pode criar uma categoria 'Destinos' e, em seguida, ter categorias filhas como 'Europa', 'América' e 'Austrália'.

Por padrão, a maioria dos temas WordPress mostra todas as categorias pai e filhas de um post.

Exibindo apenas as subcategorias no loop de posts do WordPress

No entanto, se você usar muitas categorias, suas páginas de blog podem começar a parecer confusas e complicadas. Isso também pode dificultar que os leitores encontrem a categoria em que estão interessados.

Por esse motivo, você pode querer ocultar as categorias pai genéricas de uma postagem e mostrar apenas as categorias filho. Dito isso, vamos ver como você pode exibir apenas categorias filho no loop de postagens do WordPress.

Antes de Editar um Arquivo de Tema do WordPress: Pontos Chave a Lembrar

Este guia é voltado para pessoas que se sentem confortáveis com codificação e edição de arquivos de tema do WordPress. Aqui estão algumas coisas que você deve fazer antes de seguir o tutorial:

  1. Primeiro, você precisa conectar seu site com FTP ou abrir o gerenciador de arquivos do seu provedor de hospedagem para poder acessar esses arquivos.
  2. Se você é iniciante, pode consultar nosso guia para iniciantes sobre como colar trechos da web no WordPress para se preparar antecipadamente.
  3. Recomendamos criar um backup ou usar um site de staging para seguir este método. Dessa forma, se algo der errado, seu site ativo não será afetado.

Por fim, este guia só é aplicável a temas clássicos do WordPress. Temas de blocos têm uma estrutura diferente para os arquivos do tema.

Exibindo Apenas a Categoria Filha no Loop de Posts do WordPress

Neste tutorial, mostraremos como editar seu arquivo de tema usando o gerenciador de arquivos do Bluehost. Mas independentemente do seu provedor de hospedagem, os passos devem ser semelhantes.

Primeiro, faça login no seu painel do Bluehost e navegue até a aba ‘Websites’. Em seguida, clique em ‘Settings’ no site que você deseja editar.

Configurações do site Bluehost

Em seguida, role para baixo até a seção Quick Links.

Em seguida, clique no botão 'Gerenciador de Arquivos'.

Acessando o gerenciador de arquivos de um site no Bluehost

Isso abrirá o gerenciador de arquivos.

Agora, você precisará encontrar o código em seu arquivo de tema que é responsável por exibir as categorias. Você pode começar a fazer isso acessando a pasta public_html do seu site » wp-content » themes » pasta do seu tema atual.

Nesta fase, você pode precisar abrir cada arquivo e pasta um por um para encontrar o arquivo certo para editar. Uma coisa que você pode fazer é tentar encontrar código relacionado a categorias, como has_category ou get_the_category_list. Se você os localizar, então você deve estar no arquivo certo.

Se você não conseguir encontrar o arquivo de template correto, consulte nossa tabela de referência da hierarquia de templates do WordPress e nosso guia sobre como encontrar o arquivo de tema correto para editar.

Se você usar o tema Twenty Twenty-One, o arquivo que você deve procurar é o arquivo template-tags dentro da pasta 'inc'. Assim que o encontrar, você pode clicar com o botão direito no arquivo e selecionar 'Editar'.

Abrindo a pasta inc para o tema Twenty Twenty One no gerenciador de arquivos da Bluehost

No arquivo, este é o trecho responsável por exibir as categorias e tags:

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 {

Agora que você encontrou o código certo, pode substituir todo esse trecho por este:

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 trecho de código primeiro identifica todas as categorias atribuídas à postagem. Em seguida, verifica se cada categoria tem um pai.

Se tiver, isso significa que é uma subcategoria e ela é adicionada à lista de exibição. As categorias pai são ignoradas, resultando em uma exibição mais limpa e específica da categorização da sua postagem.

Veja como deve ficar quando você substituir o código:

Fazendo alterações no código que exibe a lista de categorias no loop de posts usando o gerenciador de arquivos da Bluehost

Quando terminar, basta salvar suas alterações.

Agora, você precisa visitar uma postagem que tenha uma ou mais categorias filhas. Você verá que a categoria pai está oculta e o WordPress agora está mostrando apenas as categorias filhas.

Resultado da edição do código para exibir apenas a subcategoria no loop de posts

Esperamos que este artigo tenha ajudado você a aprender como exibir apenas a categoria filha em suas postagens do WordPress. Em seguida, você pode querer ver nosso artigo sobre como estilizar categorias individuais de forma diferente no WordPress e nosso guia para iniciantes sobre como pesquisar por categoria 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

10 CommentsLeave a Reply

  1. Consegui!

    foreach((get_the_category()) as $childcat) { $parentcat = $childcat->category_parent; if (cat_is_ancestor_of(10, $childcat)) { echo get_cat_name($parentcat); } }

  2. Tenho três categorias principais e este código está funcionando com sucesso no meu loop de página única para exibir o nome da categoria selecionada. Agora quero exibir o pai da categoria. A complicação é que tenho dois níveis abaixo da categoria principal (3 níveis) e quero exibir o pai de um nível, não o pai de nível superior. Parece fácil exibir o pai superior, mas não vi nenhum código para retornar o nível filho da categoria de uma categoria neta?

  3. Este é um ótimo trecho de código. Muito obrigado até agora!

    Para um dos meus projetos, tenho que ir mais longe e exibir apenas a subcategoria mais baixa. Portanto, pode haver três níveis (Formulários -> Quadrados -> Quadrados Grandes). Com este código, todos os subs (Quadrados -> Quadrados Grandes) são exibidos. Como posso dizer a este código para repetir o processo até que apenas o último filho seja encontrado e exibido?

    Se vocês tiverem alguma solução para isso, vocês são meus heróis mais uma vez! Continuem com o ótimo trabalho e blog!

    • Se você está tentando exibir uma lista de todas as subcategorias, use a função wp_list_categories(). Ela tem parâmetros que permitem listar apenas subcategorias ou apenas categorias pai. Mas isso não funciona para o caso que estamos discutindo neste artigo.

      Admin

  4. Ótimos trechos de informações de vocês.
    Eu realmente preciso começar a me aprofundar nesse PHP.

    Ótimo site rapazes e percebo que vocês estão no Pagerank 6!
    Que tal alguns posts sobre como aumentar seu pagerank.

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.