Obter ID da categoria atual da página ativa

Olhando para puxar a ID da categoria de uma página específica no WordPress, está listando todas as postagens usando essa categoria específica. Tentei seguir as instruções abaixo, mas não funcionando. Posso obter o nome da categoria usando single_term_title .

 $category = single_term_title("", false); $catid = get_cat_ID( $category ); 

$category está exibindo “Entretenimento”, por exemplo. Mas também preciso do ID de “Entretenimento”. Como eu iria sobre isso?

Você pode tentar usar get_the_category() :

 $categories = get_the_category(); $category_id = $categories[0]->cat_ID; 

Se for uma página de categoria, você pode obter o ID da categoria atual por:

 $category = get_category( get_query_var( 'cat' ) ); $cat_id = $category->cat_ID; 

Se você deseja obter o ID da categoria de qualquer categoria específica em qualquer página, tente usar:

 $category_id = get_cat_ID('Category Name'); 

A maneira mais antiga, porém rápida, de usar é:

 $cat_id = get_query_var('cat'); 

Eu uso a function get_queried_object para obter a categoria atual em uma página do modelo category.php.

 $current_category = get_queried_object(); 

Jordan Eldredge está certo, get_the_category não é adequado aqui.

Eu acho que alguns dos itens acima podem funcionar, mas usar a function get_the_category parece complicado e pode dar resultados inesperados.

Eu acho que a maneira mais direta e simples de acessar a ID do gato em uma página de categoria é:

 $wp_query->query_vars['cat'] 

Felicidades

Eu usei isso para painéis na página de modelo de categoria:

 $cat_obj = $wp_query->get_queried_object(); $thiscat_id = $cat_obj->term_id; $thiscat = get_category($thiscat_id); $parentcat = get_category($thiscat->parent); 

Alternativa –

  $catID = the_category_ID($echo=false); 

EDIT: Acima da function está obsoleta, use get_the_category()

Eu encontrei esta pergunta enquanto procurava exatamente o que você pediu. Infelizmente você aceitou uma resposta incorreta. Por causa de outras pessoas que estão tentando alcançar o que estávamos tentando alcançar, pensei que publicaria a resposta correta.

 $cur_cat = get_cat_ID( single_cat_title("",false) ); 

Como você disse single_term_title("", false); estava devolvendo corretamente o título da categoria, não tenho certeza por que você teria tido problemas com seu código; mas o código acima funciona perfeitamente para mim.

 $cats = wp_get_post_terms( $post->ID, 'product_cat' ); foreach($cats as $cat){ /*check for category having parent or not except category id=1 which is wordpress default category (Uncategorized)*/ if($cat->parent != '0' && $cat->term_id != 1){ echo ''; break; } }