A lógica é o cérebro do seu tema. Em 2026, apesar do Full Site Editing (FSE), a lógica PHP não está obsoleta.
Um erro comum é confundir in_category() com has_term().
Este guia de 1500 palavras estabelece os Procedimentos Operacionais Padrão (SOP) para lógica moderna.
Parte 1: O básico - Verificar categorias
1. IN_category()
Use isto ESTRITAMENTE para a taxonomia nativa “Categoria”.
if ( in_category( 'noticias' ) ) {
// Post de Notícias
}
Aviso: Não verifica taxonomias personalizadas (como ‘product_cat’ no WooCommerce).
2. Has_term() (a ferramenta universal)
Deve quase sempre preferir has_term().
// Verificar se o post está no termo 'jeans' de 'product_cat'
if ( has_term( 'jeans', 'product_cat' ) ) {
// É um par de jeans.
}
Parte 2: A complexidade da hierarquia (filhos e pais)
As funções nativas verificam correspondência exata.
Se verificar in_category('fruta'), mas o post estiver apenas em maca, o teste falha.
A solução: Post_is_in_descendant_category()
O WordPress não tem verificação recursiva nativa no core. Precisa de uma função auxiliar.
function wppoland_post_is_in_descendant_category( $cats, $_post = null ) {
// Lógica auxiliar usando get_term_children
}
Parte 3: Tags condicionais em 2026
Condições PHP são vitais para:
- Carregar Assets: Carregar JS pesado apenas quando necessário.
- Filtrar Conteúdo: Adicionar avisos automaticamente.
Parte 4: Performance
Impacto na base de dados
Cada chamada has_term usa Object Cache. É rápido (O(1)).
Mas get_term_children pode ser caro em taxonomias enormes.
Parte 5: Especificidades WooCommerce
Armadilha Comum: Tentar usar is_product_category() dentro de um Loop padrão.
Não funciona. Use has_term( $term, 'product_cat', $post_id ).
Resumo
- Use
has_term()pela robustez. - Use funções auxiliares para verificações Recursivas.
- Distinga entre Contexto da Página (
is_category()) e Dados do Post (in_category()).

