Как получить ID категории текущей записи?

30 нояб. 2016 г., 06:32:25
Просмотры: 122K
Голосов: 4

Мне нужно получить ID категории текущей записи вне цикла. Сначала я получаю категорию на основе ID записи:

global $wp_query;
$postcat = get_the_category( $wp_query->post->ID );

Как теперь получить ID категории? Я пробовал: $cat_id = $postcat->term_id;, но это не работает.

0
Все ответы на вопрос 5
0
16

Когда вы используете функцию get_the_category() для получения данных категории, она возвращает массив объектов, поэтому вам нужно получить ID категории, указав ключ массива, например: $postcat[0]->term_id

global $post;
$postcat = get_the_category( $post->ID );

// можно попробовать print_r($postcat);  

if ( ! empty( $postcat ) ) {
    echo esc_html( $postcat[0]->name );   
}

Надеюсь, это поможет!

30 нояб. 2016 г. 06:38:31
0

Старый пост, понимаю, но скорее всего вам нужна функция wp_get_post_categories.

$cats = wp_get_post_categories( get_the_ID(), array( 'fields' => 'ids' ) );

Это вернёт массив ID категорий в таком виде:

array (size=3)
  0 => int 13
  1 => int 15
  2 => int 120

Так что если вам нужен только один ID категории, вы можете получить его из первого ключа массива ID категорий.

$category_id = $cats[0];
10 сент. 2020 г. 09:29:21
0

Улучшение ответа Govind Kumar, так как автор вопроса спрашивает про ID категории, а не название категории. Свойство объекта для ID категории называется "cat_ID".

// получаем ID категории для общего отображения
$postcat = get_the_category( $query->post->ID );
if ( ! empty( $postcat ) ) {
 echo $postcat[0]->cat_ID;
}
28 июл. 2018 г. 15:05:30
1
-1

global $post;
$postcat = get_the_category( $post->ID );
    if ( ! empty( $postcat ) ) {
       foreach ($postcat  as $nameCategory) {
           echo $nameCategory->name .' ';   
         }                                      
    }?>
7 июл. 2018 г. 19:57:58
Комментарии

Не отвечает на вопрос. Автор вопроса хотел получить ID категории, а не список названий для вывода.

Jacob Peattie Jacob Peattie
8 июл. 2018 г. 09:25:23
1
-1
// Функция для получения названия категории по ID
function catName($cat_id) {
    $cat_id = (int) $cat_id; // Приводим ID категории к целочисленному типу
    $category = &get_category($cat_id); // Получаем объект категории
    return $category->name; // Возвращаем название категории
}

// Функция для получения ссылки на категорию
function catLink($cat_id) {
    $category = get_the_category(); // Получаем массив категорий текущего поста
    $category_link = get_category_link($cat_id); // Получаем ссылку на категорию
    echo $category_link; // Выводим ссылку
}

// Пользовательская функция для вывода родительской категории
function catCustom() {
   $cats = get_the_category($post->ID); // Получаем категории текущего поста
    $parent = get_category($cats[1]->category_parent); // Получаем родительскую категорию
    if (is_wp_error($parent)){ // Если возникла ошибка
        $cat = get_category($cats[0]); // Берем первую категорию
      }
      else{
        $cat = $parent; // Иначе используем родительскую категорию
      }
    // Выводим ссылку на категорию с её названием
    echo '<a href="'.get_category_link($cat).'">'.$cat->name.'</a>';    
}

ИСПОЛЬЗУЙТЕ <a href="<?php catLink(1); ?>"> <?php catName(1); ?>

10 нояб. 2018 г. 10:10:39
Комментарии

Добро пожаловать на сайт, @swibo. Этот ответ мог бы быть немного понятнее. Возможно, стоит объяснить, что вы делаете и почему, а также почему это отвечает на исходный вопрос.

butlerblog butlerblog
11 нояб. 2018 г. 01:57:26