Как получить ID категории текущей записи?
Мне нужно получить ID категории текущей записи вне цикла. Сначала я получаю категорию на основе ID записи:
global $wp_query;
$postcat = get_the_category( $wp_query->post->ID );
Как теперь получить ID категории? Я пробовал: $cat_id = $postcat->term_id;
, но это не работает.

Когда вы используете функцию 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 );
}
Надеюсь, это поможет!

Старый пост, понимаю, но скорее всего вам нужна функция 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];

Улучшение ответа Govind Kumar, так как автор вопроса спрашивает про ID категории, а не название категории. Свойство объекта для ID категории называется "cat_ID".
// получаем ID категории для общего отображения
$postcat = get_the_category( $query->post->ID );
if ( ! empty( $postcat ) ) {
echo $postcat[0]->cat_ID;
}

// Функция для получения названия категории по 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); ?>
