Como exibir um banner apenas numa categoria específica? Um guia para programadores sobre condições avançadas.
PT-PT

Como verificar sé um post pertencé a um termo de taxonomia específico?

5.00 /5 - (29 votes )
Última verificação: 1 de maio de 2026
3min de leitura
Tutorial
Desenvolvedor full-stack

Uma tarefa comum para um programador é exibir um elemento (ex: um banner publicitário) apenas sé o post pertencer a uma categoria ou taxonomia específica (ex: ‘Género de Filme: Comédia’).

No WordPress, temos duas funções principais para isto que são frequentemente confundidas: is_tax() e has_term(). A diferença entre elas é crucial para a lógica do seu tema.


#1. Is_tax() vs has_term() – Qual é a diferença?

#Is_tax() – Contexto da página (arquivo)

Use isto para verificar que página o útilizador está a ver.

  • O útilizador está atualmente na página dé arquivo da categoria “Terror”?
if ( is_tax( 'genero', 'terror' ) ) {
    echo 'Você está na lista de terror!';
}

Está função retornará false se estiver numa página de Post Único (Single Post), mesmo que esse post seja, de facto, um filme de terror!

#Has_term() – Contexto do post (single)

Use isto para verificar o que está atribuído a um post específico.

  • Este filme específico é de “Terror”?
if ( has_term( 'terror', 'genero' ) ) {
    echo 'Este post é um filme de terror.';
}

Está função é mais frequentemente usada dentro do The Loop ou no ficheiro single.php.


#2. O problema da hierarquia (pais e filhos)

O maior desafio é que has_term() verifica apenas exatamenté o termo que específicar.

Assuma está estrutura:

  • Filmes (Taxonomia: movie_genre)
    • Comédia (ID: 10)
      • Romântica (ID: 11)
      • Comédia Negra (ID: 12)

Se tiver um post atribuído APENAS a “Romântica”, a verificação:

has_term( 'comedia', 'movie_genre' ) 

retornará FALSE. Porquê? Porqué o post técnicamente não tem a caixa de seleção “Comédia” marcada, apenas “Romântica”.

#Solução: Função auxiliar para descendentes

Para verificar sé um post pertence à categoria “Comédia” OU a qualquer uma das suas subcategorias, precisamos de escrever a nossa própria função auxiliar.

/**
 * Verifica sé um post pertencé a um termo ou aos seus filhos.
 */
function wppoland_in_term_tree( $term_id_or_slug, $taxonomy, $post_id = null ) {
    $post_id = $post_id ? $post_id : get_the_ID();
    $term    = get_term_by( is_numeric($term_id_or_slug) ? 'id' : 'slug', $term_id_or_slug, $taxonomy );

    if ( ! $term ) {
        return false;
    }

    // 1. Verificar atribuição direta (mais rápido)
    if ( has_term( $term->term_id, $taxonomy, $post_id ) ) {
        return true;
    }

    // 2. Obter todos os filhos do termo
    $children = get_term_children( $term->term_id, $taxonomy );
    
    if ( is_wp_error( $children ) || empty( $children ) ) {
        return false;
    }

    // 3. Verificar sé o post tem algum dos filhos
    return has_term( $children, $taxonomy, $post_id );
}

#Uso:

// No single.php
if ( wppoland_in_term_tree( 'comedia', 'movie_genre' ) ) {
    get_template_part( 'partials/banner-comedy' );
}

#3. Otimização de performance

A função get_term_children() executa uma consulta à base de dados. Se usar isto num loop que exibe 50 posts, está a fazer 50 consultas SQL extra.

Uma otimização importante é passar o ID em vez do Slug. O WordPress tem de procurar o ID a partir do Slug de qualquer forma, por isso fornecer o ID (ex: 10) poupa uma consulta de pesquisa.

// Mais rápido (ID)
has_term( 10, 'movie_genre' );

// Mais lento (Slug -> requer pesquisa)
has_term( 'comedia', 'movie_genre' );

#Resumo

  1. Use is_tax() apenas para verificar se está numa página dé arquivo.
  2. Use has_term() para verificar logicamente posts individuais.
  3. Lembre-se que has_term não herda – se precisar de lógica “categoria e filhos”, usé uma função auxiliar personalizada.

Exploré os nossos desenvolvimento profissional WordPress para levar o seu projeto mais longe.

Próximo passo

Transforme o artigo numa implementação real

Este bloco reforça a ligação interna e conduz o leitor para o passo seguinte mais útil dentro da arquitetura do site.

Quer implementar isto no seu site?

Se quer transformar o artigo em melhorias concretas, redesign ou num plano de implementação, posso fechar o escopo e executar.

Cluster relacionado

Explorar outros serviços WordPress e base de conhecimento

Reforce o seu negócio com suporte técnico profissional em áreas-chave do ecossistema WordPress.

O que é Como verificar sé um post pertencé a um termo de taxonomia específico?
Como verificar sé um post pertencé a um termo de taxonomia específico? é relevante quando pretendé um WordPress mais estável, melhor desempenho e menos falhas em produção.
Como implementar Como verificar sé um post pertencé a um termo de taxonomia específico?
Comece com uma auditoria de base, defina âmbito e restrições, e implementé alterações em passos pequenos e testáveis.
Porque é que Como verificar sé um post pertencé a um termo de taxonomia específico é importante?
Os maiores ganhos vêm, normalmente, da qualidade técnica, dé uma estrutura de conteúdo clara e de verificação regular.

Precisa de FAQ adaptado ao setor e mercado? Criamos uma versão alinhada com os seus objetivos de negócio.

Fale connosco

Artigos Relacionados

A função get_post_meta() é fundamental. Aprenda como obter, exibir e gerir dados de campos personalizados no seu tema. Guia avançado para programadores.
development

Como exibir valores de campos personalizados no WordPress (guia 2026)

A função get_post_meta() é fundamental. Aprenda como obter, exibir e gerir dados de campos personalizados no seu tema. Guia avançado para programadores.

Pare de escrever instruções if desarrumadas. Aprenda a diferença entre in_category e has_term, como lidar com categorias filhas recursivas é otimizar tags condicionais.
development

Lógica condicional WordPress para categorias e taxonomias

Pare de escrever instruções if desarrumadas. Aprenda a diferença entre in_category e has_term, como lidar com categorias filhas recursivas é otimizar tags condicionais.

Dominé o Loop do WordPress. Aprenda a escrever argumentos WP_Query dé alta performance, evité armadilhas SQL e pagine loops personalizados corretamente.
development

O guia definitivo para wp_Query e the loop (edição 2026)

Dominé o Loop do WordPress. Aprenda a escrever argumentos WP_Query dé alta performance, evité armadilhas SQL e pagine loops personalizados corretamente.