Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
Copa WPB
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

Como exibir apenas a categoria secundária em seu loop de postagem do WordPress

De acordo com nossa experiência, se você adicionar muitas categorias às suas postagens do WordPress, as coisas podem começar a parecer um pouco lotadas. Várias categorias, especialmente as categorias pai e filho, podem bagunçar seus layouts e dificultar para os leitores encontrarem o que estão procurando.

Não seria mais limpo exibir apenas a categoria secundária para cada postagem?

Este guia mostrará como ajustar o arquivo de tema do WordPress para exibir apenas categorias secundárias no loop de postagens, dando ao seu blog uma sensação mais simplificada e fácil de usar.

Showing only child categories inside WordPress post loop

Por que exibir apenas a categoria secundária em seu loop de postagem do WordPress?

Ao criar um blog no 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 (ou subcategorias) secundárias.

Por exemplo, se você tiver um blog de viagens, poderá criar uma categoria “Destinos” e, em seguida, ter categorias secundárias como “Europa”, “América” e “Austrália”.

Por padrão, a maioria dos temas do WordPress mostra todas as categorias principais e secundárias de um post.

Displaying the child categories only in the WordPress post loop

Entretanto, se você usar muitas categorias, as páginas do seu blog poderão começar a parecer confusas e complicadas. Isso também pode tornar mais difícil para os leitores encontrarem a categoria na qual estão interessados.

Por esse motivo, talvez você queira ocultar as categorias genéricas principais de uma postagem e mostrar somente as categorias secundárias. Dito isso, vamos ver como você pode exibir somente as categorias secundárias no loop de posts do WordPress.

Antes de editar um arquivo de tema do WordPress: pontos-chave a serem lembrados

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

  1. Primeiro, você precisa conectar seu site ao FTP ou abrir o gerenciador de arquivos do seu host da Web para poder acessar esses arquivos.
  2. Se você for iniciante, consulte nosso guia para iniciantes sobre como colar trechos da Web no WordPress para se preparar com antecedência.
  3. Recomendamos criar um backup ou usar um site de teste para seguir esse método. Dessa forma, se algo der errado, seu site ativo não será afetado.

Por fim, este guia só se aplica a temas clássicos do WordPress. Os temas de bloco têm uma estrutura diferente para os arquivos de tema.

Exibindo somente a categoria secundária no loop de postagem do WordPress

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

Primeiro, faça login no painel de controle da Bluehost e navegue até a guia “Websites”. Em seguida, clique em “Settings” (Configurações) no site que você deseja editar.

Bluehost site settings

Em seguida, role para baixo até a seção Quick Links (Links rápidos).

Em seguida, clique no botão “File Manager” (Gerenciador de arquivos).

Accessing a website's file manager in Bluehost

Isso abrirá o gerenciador de arquivos.

Agora, você precisará localizar o código no arquivo do tema responsável pela exibição das categorias. Você pode começar a fazer isso acessando a pasta public_html do seu site wp-content ” themes a pasta do seu tema atual.

Nesse estágio, talvez seja necessário abrir cada arquivo e pasta, um por um, para encontrar o arquivo certo a ser editado. Uma coisa que você pode fazer é tentar encontrar o código relacionado à categoria, como has_category ou get_the_category_list. Se você os localizar, deverá estar no arquivo correto.

Se não conseguir encontrar o arquivo de modelo correto, consulte nossa folha de dicas sobre hierarquia de modelos do WordPress e nosso guia sobre como encontrar o arquivo de tema correto para editar.

Se você usa o tema Twenty Twenty-One, o arquivo que deve ser procurado é o arquivo template-tags dentro da pasta ‘inc’. Depois de encontrá-lo, clique com o botão direito do mouse no arquivo e selecione “Editar”.

Opening the inc folder for the Twenty Twenty One theme in Bluehost file manager

No arquivo, esse é o snippet responsável por exibir as categorias e as 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 correto, pode substituir todo o snippet 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 {

Esse trecho de código primeiro identifica todas as categorias atribuídas ao post. Em seguida, ele verifica se cada categoria tem um pai.

Se isso acontecer, significa que é uma categoria secundária e será adicionada à lista de exibição. As categorias pai são ignoradas, resultando em uma exibição mais limpa e específica da categorização de sua postagem.

Esta é a aparência que deve ter quando você substituir o código:

Making changes to the code that displays the category list in the post loop using the Bluehost file manager

Quando terminar, basta salvar suas alterações.

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

Result of editing the code to display only the child category in the post loop

Esperamos que este artigo tenha ajudado você a aprender como exibir somente a categoria secundária em suas postagens do WordPress. Em seguida, talvez você queira 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, inscreva-se em nosso canal do YouTube para receber tutoriais em vídeo sobre o WordPress. Você também pode nos encontrar no Twitter e no Facebook.

Divulgação: Nosso conteúdo é apoiado pelo leitor. Isso significa que, se você clicar em alguns de nossos links, poderemos receber uma comissão. Veja como o WPBeginner é financiado, por que isso é importante e como você pode nos apoiar. Aqui está nosso processo editorial.

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

O kit de ferramentas definitivo WordPress

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

Reader Interactions

11 ComentáriosDeixe uma resposta

  1. Syed Balkhi

    Hey WPBeginner readers,
    Did you know you can win exciting prizes by commenting on WPBeginner?
    Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
    You can get more details about the contest from here.
    Start sharing your thoughts below to stand a chance to win!

  2. Mike

    Managed it!

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

  3. MIke

    I have three main categories and this code is successfully working in my single page loop to echo the actual selected category name.
    I now want to echo the parent of the category. The complication is that I have two layers below the main category (3 levels) and I want to echo the one level parent not the top level parent. It seems easy to echo the top parent, but I haven’t seem any code to return the child level category of a grandchild category?

  4. amnachohan

    Will it work outside the loop ?

  5. Marian Rick

    This is a great piece of code. Thanks a lot so far!

    For one of my projects I have to go further, and display only the lowest subcategory. So there may be three levels, (Forms -> Squares -> Big Squares). With this code all subs (Squares -> Big Squares) are displayed. How can I tell this code to repeat the process till only the last child is found and displayed?

    If you’ve got any solutions for that you are my heroes once again! Keep up your great work and blog!

  6. GoranJakovljevic

    is it possible to do this for 2 categories instead of single one?

  7. gashface

    How Would I include &orderby=ID ?

  8. Andus Beckus

    This is great thanks!

    But how do you display children of all categories and not just cat 10?

    Be great if someone could help with this. :)

    • Editorial Staff

      If you are trying to display a list of all child categories, then use wp_list_categories() function. It has parameters that allow you to list only child categories or only parent categories. But that doesn’t work for the case that we are talking about in this article.

      Administrador

      • Mattia

        great, but if I want to show not “category 10” but “current category”?

  9. Keith Davis

    Great snippets of info from you guys.
    I really have to start to get into this PHP.

    Great site boys and I notice that you are up to Pagerank 6!
    How about a couple of posts on upping your pagerank.

Deixe uma resposta

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