wp_get_post_categories()

Извлекает список рубрик для записи
Функция WordPress
INT 2.1.0
WordPress Icon

Описание функции

Функция wp_get_post_categories() возвращает список категорий для определенного поста.

Функция принимает два параметра: $post_id (необязательный) — ID поста, для которого нужно получить категории, и $args (необязательный) — массив параметров запроса категорий.

Функция использует класс WP_Term_Query для выполнения запроса категорий.

Использование

wp_get_post_categories( int $post_id, array $args = array() ): array|WP_Error

Пример использования:

$categories = wp_get_post_categories( $post_id, array(
    'orderby' => 'name',
    'order'   => 'ASC',
    'hide_empty' => true
) );

В данном примере мы получаем список категорий для поста с ID $post_id, сортируем их по имени в алфавитном порядке и скрываем пустые категории.

  • $post_id (int, необязательный) — ID поста. По умолчанию равен 0.
  • $args (array, необязательный) — параметры запроса категорий. Поддерживает все аргументы класса WP_Term_Query. Более подробную информацию о параметрах можно найти в документации класса WP_Term_Query.

Функция возвращает список категорий в виде массива. Если аргумент $fields в параметрах запроса равен ‘all’ или ‘all_with_object_id’, будет возвращен массив объектов WP_Term. Если $fields равен ‘ids’, будет возвращен массив ID категорий. Если $fields равен ‘names’, будет возвращен массив названий категорий. Если таксономия ‘category’ не существует, будет возвращен объект WP_Error.

$post_id = 123; // ID поста
$args = array(
    'orderby'     => 'name', // Сортировка по имени
    'order'       => 'ASC', // Порядок сортировки - по возрастанию
    'hide_empty'  => true // Скрыть пустые категории
);
$categories = wp_get_post_categories( $post_id, $args );
if ( ! is_wp_error( $categories ) ) {
    foreach ( $categories as $category ) {
        echo '<li>' . $category->name . '</li>'; // Выводим название категории
    }
}

В данном примере мы получаем список категорий для поста с ID 123, сортируем их по имени в алфавитном порядке и выводим названия категорий в виде списка.

Примеры использования

Получение списка категорий для поста


$post_id = 123; // ID поста
$categories = wp_get_post_categories($post_id);
if (!empty($categories)) {
    foreach ($categories as $category_id) {
        $category = get_category($category_id);
        echo $category->name;
    }
} else {
    echo 'Пост не принадлежит ни одной категории.';
}

Получение списка категорий поста с указанием ID


$post_id = 123; // ID поста
$categories = wp_get_post_categories($post_id, array('fields' => 'names'));
if (!empty($categories)) {
    foreach ($categories as $category_name) {
        echo $category_name;
    }
} else {
    echo 'Пост не принадлежит ни одной категории.';
}

Получение списка категорий с указанием параметров запроса


$args = array(
    'taxonomy' => 'category', // Таксономия
    'orderby' => 'name', // Сортировка по имени
    'order' => 'ASC', // Сортировка по возрастанию
    'hide_empty' => false // Показывать пустые категории
);
$categories = wp_get_post_categories(0, $args);
if (!empty($categories)) {
    foreach ($categories as $category_id) {
        $category = get_category($category_id);
        echo $category->name;
    }
} else {
    echo 'Нет доступных категорий.';
}

Получение списка категорий с указанием сортировки и фильтрации


$args = array(
    'orderby' => 'count', // Сортировка по количеству постов
    'order' => 'DESC', // Сортировка по убыванию
    'hide_empty' => true // Скрыть пустые категории
);
$categories = wp_get_post_categories(0, $args);
if (!empty($categories)) {
    foreach ($categories as $category_id) {
        $category = get_category($category_id);
        echo $category->name;
    }
} else {
    echo 'Нет доступных категорий.';
}

Получение списка категорий с указанием мета-данных


$args = array(
    'meta_key' => 'featured', // Ключ мета-данных
    'meta_value' => '1', // Значение мета-данных
    'meta_compare' => '=', // Оператор сравнения
    'hide_empty' => false // Показывать пустые категории
);
$categories = wp_get_post_categories(0, $args);
if (!empty($categories)) {
    foreach ($categories as $category_id) {
        $category = get_category($category_id);
        echo $category->name;
    }
} else {
    echo 'Нет доступных категорий.';
}

Вопросы и ответы

Как получить список категорий для поста?

Для получения списка категорий для определенного поста в WordPress используется функция wp_get_post_categories(). Она принимает два параметра: $post_id (необязательный) и $args (необязательный массив).

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

Параметр $args позволяет задать дополнительные параметры запроса категорий. Он является массивом и поддерживает следующие аргументы:

  • taxonomy: строка или массив строк, указывающих название таксономии или таксономий, к которым ограничиваются результаты.
  • orderby: строка, указывающая поле или поля, по которым сортируются категории.
  • order: строка, указывающая порядок сортировки категорий (ASC или DESC).
  • hide_empty: булево значение, указывающее, нужно ли скрывать категории, которые не присвоены ни одному посту.
  • include: массив или строка с ID категорий, которые нужно включить в результаты.
  • exclude: массив или строка с ID категорий, которые нужно исключить из результатов.
  • number: число или строка, указывающая максимальное количество категорий, которые нужно вернуть.
  • fields: строка, указывающая, какие поля категорий нужно вернуть.
  • и другие параметры, подробное описание которых можно найти в документации.

Функция возвращает массив категорий или объект WP_Error, если таксономия «category» не существует.


$post_id = 123;
$args = array(
  'taxonomy' => 'category',
  'orderby' => 'name',
  'order' => 'ASC',
  'hide_empty' => true,
  'fields' => 'all'
);
$categories = wp_get_post_categories($post_id, $args);
if (!is_wp_error($categories)) {
  foreach ($categories as $category) {
    echo $category->name;
  }
}

Как получить список категорий для нескольких постов?

Для получения списка категорий для нескольких постов в WordPress можно использовать функцию wp_get_post_categories() в цикле, перебирая посты. В этом случае параметр $post_id будет меняться для каждого поста.


$posts = array(123, 456, 789);
foreach ($posts as $post_id) {
  $args = array(
    'taxonomy' => 'category',
    'orderby' => 'name',
    'order' => 'ASC',
    'hide_empty' => true,
    'fields' => 'all'
  );
  $categories = wp_get_post_categories($post_id, $args);
  if (!is_wp_error($categories)) {
    foreach ($categories as $category) {
      echo $category->name;
    }
  }
}

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

Если вам нужно получить только ID категорий для определенного поста, вы можете использовать функцию wp_get_post_categories() с параметром fields, установленным в «ids». В этом случае функция вернет массив ID категорий.


$post_id = 123;
$args = array(
  'taxonomy' => 'category',
  'fields' => 'ids'
);
$category_ids = wp_get_post_categories($post_id, $args);
if (!is_wp_error($category_ids)) {
  foreach ($category_ids as $category_id) {
    echo $category_id;
  }
}

Как получить только названия категорий для поста?

Для получения только названий категорий для определенного поста в WordPress можно использовать функцию wp_get_post_categories(). Эта функция возвращает массив названий категорий.


$post_id = 123; // ID поста
$categories = wp_get_post_categories($post_id, array('fields' => 'names'));
foreach ($categories as $category) {
    echo $category . '<br>';
}

Как получить только слаги категорий для поста?

Если вам нужно получить только слаги (slug) категорий для определенного поста, вы можете использовать функцию wp_get_post_categories() с параметром fields, установленным в значение ‘slugs’.


$post_id = 123; // ID поста
$slugs = wp_get_post_categories($post_id, array('fields' => 'slugs'));
foreach ($slugs as $slug) {
    echo $slug . '<br>';
}

Как получить количество категорий для поста?

Если вам нужно получить только количество категорий для определенного поста, вы можете использовать функцию wp_get_post_categories() с параметром count, установленным в значение true.


$post_id = 123; // ID поста
$count = wp_get_post_categories($post_id, array('count' => true));
echo 'Количество категорий: ' . $count;

Как получить список категорий с дочерними категориями?

Для получения списка категорий с дочерними категориями в WordPress можно использовать функцию wp_get_post_categories(). Эта функция принимает два параметра: $post_id и $args.

Параметр $post_id является необязательным и указывает ID поста, для которого нужно получить список категорий. Если не указан, будет использован ID текущего поста.

Параметр $args также является необязательным и позволяет настроить запрос категорий. В нем можно указать такие параметры, как taxonomy (название таксономии), orderby (поле для сортировки), order (порядок сортировки), hide_empty (скрыть пустые категории) и другие.

Функция wp_get_post_categories() возвращает массив категорий. Если в параметре $args указано поле fields со значением 'all' или 'all_with_object_id', то будет возвращен массив объектов WP_Term. Если поле fields равно 'ids', то будет возвращен массив ID категорий. Если поле fields равно 'names', то будет возвращен массив названий категорий.

Вот пример использования функции wp_get_post_categories() для получения списка категорий с дочерними категориями:


$post_id = 123; // ID поста
$args = array(
    'taxonomy' => 'category', // название таксономии
    'orderby' => 'name', // сортировка по названию
    'order' => 'ASC', // сортировка по возрастанию
    'hide_empty' => false, // показывать пустые категории
    'child_of' => 0 // ID родительской категории (0 - все категории)
);
$categories = wp_get_post_categories($post_id, $args);
foreach ($categories as $category) {
    echo $category->name;
}

Как получить список категорий без дочерних категорий?

Для получения списка категорий без дочерних категорий в WordPress можно использовать функцию wp_get_post_categories() с параметром child_of, указав значение 0. Это означает, что будут получены только категории верхнего уровня.

Вот пример использования функции wp_get_post_categories() для получения списка категорий без дочерних категорий:


$post_id = 123; // ID поста
$args = array(
    'taxonomy' => 'category', // название таксономии
    'orderby' => 'name', // сортировка по названию
    'order' => 'ASC', // сортировка по возрастанию
    'hide_empty' => false, // показывать пустые категории
    'child_of' => 0 // ID родительской категории (0 - только категории верхнего уровня)
);
$categories = wp_get_post_categories($post_id, $args);
foreach ($categories as $category) {
    echo $category->name;
}

Как получить список категорий, скрытых от постов?

Для получения списка категорий, скрытых от постов в WordPress можно использовать функцию wp_get_post_categories() с параметром hide_empty, указав значение true. Это означает, что будут получены только категории, которые не привязаны к постам.

Вот пример использования функции wp_get_post_categories() для получения списка скрытых категорий:


$post_id = 123; // ID поста
$args = array(
    'taxonomy' => 'category', // название таксономии
    'orderby' => 'name', // сортировка по названию
    'order' => 'ASC', // сортировка по возрастанию
    'hide_empty' => true, // скрыть пустые категории
    'child_of' => 0 // ID родительской категории (0 - все категории)
);
$categories = wp_get_post_categories($post_id, $args);
foreach ($categories as $category) {
    echo $category->name;
}

Функция wp_get_post_categories() позволяет получить список категорий для поста в WordPress. Она принимает параметры для настройки запроса категорий и возвращает массив категорий или объектов WP_Term. Функция может быть использована для получения списка категорий с дочерними категориями, без дочерних категорий и скрытых от постов.

Связанные элементы

  • Функция get_the_category(): Возвращает массив объектов категорий, к которым относится пост.
  • Функция get_the_category_list(): Возвращает отформатированный список категорий, к которым относится пост.
  • Функция get_category(): Возвращает объект категории по ее ID.
  • Функция get_categories(): Возвращает массив объектов всех категорий или категорий определенной таксономии.
  • Функция wp_set_post_categories(): Устанавливает категории для указанного поста.
  • Хук pre_get_posts: Позволяет изменять параметры запроса перед выполнением запроса к базе данных.
  • Класс WP_Term_Query: Класс для выполнения запросов категорий и других таксономий.
Обсуждение