Получить идентификатор текущей категории активной страницы - PullRequest
70 голосов
/ 12 января 2012

Нужно получить идентификатор категории определенной страницы в WordPress, в которой перечислены все сообщения, использующие эту конкретную категорию.Пробовал ниже, но не работает.Я могу получить название категории, используя single_term_title.

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

$category, например, отображается «Развлечения».Но мне также нужно удостоверение личности "Развлечения".Как бы я пошел по этому поводу?

Ответы [ 10 ]

179 голосов
/ 12 января 2012

Если это страница категории, вы можете получить идентификатор текущей категории по:

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

Если вы хотите получить идентификатор категории какой-либо конкретной категории на любой странице, попробуйте использовать:

$category_id = get_cat_ID('Category Name');
58 голосов
/ 12 января 2012

Вы можете попробовать использовать get_the_category():

$categories = get_the_category();
$category_id = $categories[0]->cat_ID;
30 голосов
/ 18 июня 2013

Самый старый, но самый быстрый способ, которым вы можете воспользоваться:

$cat_id = get_query_var('cat');
16 голосов
/ 10 января 2014

Я использую функцию get_queried_object, чтобы получить текущую категорию на странице шаблона category.php.

$current_category = get_queried_object();

Джордан Элдридж прав, get_the_category здесь не подходит.

4 голосов
/ 23 сентября 2013

Я думаю, что некоторые из вышеперечисленных могут работать, но использование функции get_the_category кажется хитрым и может дать неожиданные результаты.

Я думаю, что самый прямой и простой способ доступа к идентификатору кошки на странице категории:

$wp_query->query_vars['cat']

Приветствия

1 голос
/ 09 августа 2016

Я использовал это для хлебных крошек на странице шаблона категории:

$cat_obj = $wp_query->get_queried_object();
$thiscat_id = $cat_obj->term_id;
$thiscat = get_category($thiscat_id);
$parentcat = get_category($thiscat->parent);
1 голос
/ 04 февраля 2015

Альтернатива -

 $catID = the_category_ID($echo=false);

РЕДАКТИРОВАТЬ: вышеуказанная функция устарела, пожалуйста, используйте get_the_category()

0 голосов
/ 22 января 2019

Попытка выше найти решения для определения идентификатора сообщения, но ничего не помогло, вместо этого использовалось следующее:

$obj = get_queried_object();
$c_id = wp_get_post_categories($obj->ID);
0 голосов
/ 10 февраля 2017
$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 '<h2 class="link"><a href="'.get_category_link($cat->term_id ).'">'.$cat->name.'</a></h2>';
    break;
  }
}
0 голосов
/ 21 мая 2013

Я нашел этот вопрос, когда искал именно то, что вы спросили.К сожалению, вы приняли неправильный ответ.Ради других людей, которые пытаются достичь того, чего мы пытались достичь, я решил опубликовать правильный ответ.

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

Как вы сказали, single_term_title("", false); правильно возвращал название категории,Я не уверен, почему у вас были бы проблемы с вашим кодом;но приведенный выше код работает для меня безупречно.

...