Intereting Posts
Как изменить URL главного сайта на многоузловой установке (сети)? Несколько входов в элементе управления Customizer Как мы можем получить Catergory / Term Creator Где заполнять пользовательские термины в пользовательской таксономии в плагине? Как загрузить SVG-изображения с помощью медиа-загрузчика? Каков правильный способ добавления функциональности к опубликованному плагину WordPress? Как добавить YITH Список желаний для навигации Отправьте данные формы на другую страницу через Ajax (WordPress Way) Список авторов, основанный на недавнем активном Контактная форма 7 – добавить пользовательскую функцию по электронной почте отправить Динамическое изменение атрибутов изображений на сообщениях WordPress Multisite: как сделать все элементы медиабиблиотеки доступными для каждого сайта? «Скоро появятся» записи блога-заполнителя? Как исключить конкретное значение атрибута продукта woocommerce в функции? Изменение сообщений об ошибках входа в систему

Получить идентификатор категории внутри шаблона категории

как получить идентификатор cat внутри шаблона. Очень важно: я не могу сделать это по имени, потому что у нас есть многословные кошки с тем же именем. Только слизь отличается. Если бы я получил пулю, все было бы хорошо. Но, как я уже сказал, я не могу использовать название Cat …

Solutions Collecting From Web of "Получить идентификатор категории внутри шаблона категории"

$wp_query->get_queried_object() предоставит вам «запрашиваемый объект». В архиве категории это объект категории, на странице автора это автор, на одном посте это сам пост, … ну, вы получите эту идею. Если вам нужен только ID, вы также можете использовать $wp_query->get_queried_object_id() .

Умм, я еще не могу прокомментировать, но ответ Вицепреса действительно работает. Следующие статьи прекрасно работают на странице архива категорий (хотя вы, вероятно, хотите сделать что-то другое, кроме как просто эхо):

 <?php $category = get_the_category(); echo $category[0]->cat_ID; ?> 

EDIT: Поцарапайте это, это сработало для меня, пока я не наткнулся на категорию, у которой не было должности, затем она взяла подкатегорию вместо основной категории. Вы не можете полагаться на get_the_category на странице шаблона категории .

Вы можете использовать get_the_category() для этого.

Пример:

 <?php $category = get_the_category(); // use this to echo the slug echo $category[0]->slug; // use this to echo the cat id echo $category[0]->cat_ID; // if you've got multiple categories you can run a foreach loop like so foreach ( $category as $cat ) : echo '<li>' . $cat->name . '</li>'; endforeach; ?> 

Вы можете использовать:

 <?php echo '<pre>'; print_r($category); echo '</pre>'; ?> 

для просмотра массива возвращаемых объектов.

Если я не понимаю вопрос, я думаю, вы также можете добавить категорию id / slug в класс body:

 <?php if(is_category()) { $cat_ID = 'cat-'.get_query_var('cat'); } ?> <body <?php body_class($cat_ID); ?>> 

Ответ @Jan Fabry на самом деле правильный ответ, вот почему: поскольку WordPress допускает несколько категорий для сообщения, используя $category = get_the_category() и запрашивая $category[0] , не будет работать в каждом случае, так как то, что вы на самом деле делаете, прося первую категорию первого поста. Представьте, что у вас есть категории A, B и C. Если у вас есть только одно сообщение, у вас есть категории A и B, и вы находитесь на странице категории B, вы можете в конечном итоге получить информацию от A.

Поэтому лучше использовать $category = $wp_query->get_queried_object() , потому что в предыдущем примере он всегда будет получать информацию о вас, когда вы находитесь на странице категории B.

 $category = get_category( get_query_var( 'cat' ) ); $cat_id = $category->cat_ID; $catname=explode(",",get_category_parents($cat_id,'',',')); print_r($catname); 

Большинство приведенных выше примеров работают, но если вы используете несколько категорий NONE ( начиная с записи, WP версии 3.6), другие методы работают, чтобы получить все категории, которые были переданы либо «cat», либо «category_name».

Единственный способ, которым я нашел, это вытащить данные из:

 $wp_query->query['category_name'] 

По какой-то причине это возвращает другое значение get_query_var( 'category_name' ) которое возвращает только первую категорию.

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

 <?php global $wp_query; //grab all categories from query string (if using `category_name`) $category_slugs_array = explode("+",esc_attr($wp_query->query['category_name'])); $categories = array(); $category_ids = array(); //loop through all the slugs foreach($category_slugs_array as $category_slug) { //get category object using slug $category = get_category_by_slug( $category_slug ); //check to make sure a matching category has been found if(isset($category->cat_ID)) { $categories[] = $category; $category_ids[] = $category->cat_ID; } } var_dump($categories); //array of categories var_dump($category_ids); //array of category IDs ?> 

Очевидно, что при использовании операторов AND (+) или OR (,) должны быть некоторые соображения.

Основываясь на моем поиске, вы должны использовать это:

 $category = get_queried_object(); echo $category->term_id;