Deseja exibir apenas a categoria secundária em seu loop de postagem do WordPress?
A maioria dos temas do WordPress mostra todas as categorias de uma postagem, inclusive as categorias pai e filho. No entanto, se você adicionar muitas categorias às suas postagens, isso pode fazer com que seu site pareça confuso e impedir que os leitores encontrem conteúdo interessante.
Neste artigo, mostraremos como exibir facilmente apenas a categoria secundária em seu loop de postagem do WordPress.
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.
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:
- Primeiro, você precisa conectar seu site ao FTP ou abrir o gerenciador de arquivos do seu host da Web para poder acessar esses arquivos.
- Se você for iniciante, consulte nosso guia para iniciantes sobre como colar trechos da Web no WordPress para se preparar com antecedência.
- 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
Primeiro, você precisará localizar o código nos arquivos do seu tema que é responsável pela exibição das categorias. Isso pode levar algum tempo, mas você pode usar o recurso de localização do seu editor de código para acelerar o processo.
Tente encontrar códigos relacionados à categoria, como has_category
ou get_the_category_list
. Se você os localizar, deverá estar no arquivo correto.
Se você usa o tema Twenty Twenty-One, o arquivo que você deve procurar é o arquivo template-tags
dentro da pasta ‘inc’. Aqui está o snippet responsável pela exibição das categorias:
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
);
}
echo '</div>';
}
Se você não conseguir encontrar o arquivo de modelo correto, consulte nossa folha de dicas sobre hierarquia de modelos do WordPress.
Agora que você encontrou o código correto, pode adicionar o seguinte snippet:
// Get the IDs of categories
$categories = get_the_category();
$child_cat_ID = array(); // Array to store child category IDs
foreach( $categories as $category ) {
// Check if the category has a parent (i.e., it's a child category)
if ( $category->parent > 0 ) {
$child_cat_ID[] = $category->term_id; // Store the child category ID
}
}
if ( !empty($child_cat_ID) ) {
$output = '<span class="cat-links">' . esc_html__( 'Categorized as ', 'twentytwentyone' );
foreach($child_cat_ID 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; // Echo the entire output
Se você usa o tema Twenty Twenty-One, deve adicionar o código acima substituindo o que está entre essas linhas:
if ( has_category() || has_tag() ) {
echo '<div class="post-taxonomies">';
// Replace the code in between these lines
}
echo '</div>';
}
Esta é a aparência que deve ter:
Quando terminar, salve as alterações e carregue o arquivo de volta para o servidor de hospedagem na Web.
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.
Esperamos que este artigo tenha ajudado você a aprender como exibir somente a categoria secundária em seus posts do WordPress. Em seguida, talvez você queira ver nosso guia sobre como ganhar dinheiro on-line blogando com o WordPress ou nossas escolhas de especialistas para os melhores plug-ins e ferramentas de SEO que você deve usar.
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.
Syed Balkhi says
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!
Mike says
Managed it!
foreach((get_the_category()) as $childcat) {
$parentcat = $childcat->category_parent;
if (cat_is_ancestor_of(10, $childcat)) {
echo get_cat_name($parentcat);
}
}
MIke says
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?
amnachohan says
Will it work outside the loop ?
Marian Rick says
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!
GoranJakovljevic says
is it possible to do this for 2 categories instead of single one?
gashface says
How Would I include &orderby=ID ?
Andus Beckus says
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 says
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 says
great, but if I want to show not “category 10” but “current category”?
Keith Davis says
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.