# Функция GET_OBJECTS_IN_TERM() │ WP 2.3.0
Функция get_objects_in_term() позволяет извлекать идентификаторы объектов (ID) из заданной таксономии и термина. Эта функция особенно полезна для работы с категориями и метками в WordPress.
## Как работает функция?
Перед использованием функции необходимо убедиться, что переданные строки $taxonomies существуют. Если таксономия недействительна, функция вернёт ошибку типа WP_Error.
Для $terms нет таких строгих проверок, но они всё равно должны существовать, чтобы функция смогла вернуть идентификаторы объектов.
Также можно изменить порядок возвращаемых идентификаторов объектов, используя параметры $args, указав 'ASC' для восходящего или 'DESC' для нисходящего порядка. Значение указывается в ключе 'order'.
### Время выполнения функции
- Один раз — 0.000449 секунды (быстро)
- 50 000 раз — 13.14 секунды (медленно)
- PHP 7.1.2, WP 4.7.5
## Возвращаемые значения
Функция возвращает массив идентификаторов объектов в виде строковых чисел в случае успеха, или WP_Error, если таксономия не существует.
## Использование функции
```php
get_objects_in_term( $term_ids, $taxonomies, $args );
- $term_ids (int|int[]) (обязательно): ID термина или массив идентификаторов термина.
- $taxonomies (string|string[]) (обязательно): название таксономии или массив названий таксономий.
- $args (array|string): параметры для изменения порядка идентификаторов объектов.
- order (string): Порядок получения терминов. Принимает 'ASC' или 'DESC'. По умолчанию 'ASC'.
Примеры использования
Пример 1: Получение ID всех записей из категории
Получим идентификаторы записей из категории с ID 33:
$post_ids = get_objects_in_term( 33, 'category' );
print_r( $post_ids );
/*
Array (
[0] => 72
[1] => 372
[2] => 800
)
*/
Пример 2: Получение ID всех записей из нескольких таксономий
Здесь 33 — это элемент таксономии 'category', а 12 — элемент таксономии 'post_tag':
$objects = get_objects_in_term( [33, 12], ['category', 'post_tag'] );
print_r( $objects );
/*
Array (
[0] => 72
[1] => 372
[2] => 800
[3] => 2818
[4] => 2971
[5] => 3755
)
*/
Пример 3: Проверка возвращаемого значения
Проверим возвращаемое значение:
$objects = get_objects_in_term( [33, 12], ['category', 'post_tag'] );
if (is_wp_error($objects)) {
echo 'Таксономия неверна';
} elseif (!$objects) {
echo 'Нет объектов';
} else {
echo 'Есть объекты!';
print_r($objects);
}
Пример 4: Список всех меток записей из заданной категории
Получим список всех меток записей, которые находятся в указанной категории (в данном случае — текущей категории):
if (is_category()) {
$term_id = get_queried_object_id(); // ID текущей категории
$term_ids = get_term_children($term_id, 'category'); // соберем ID всех дочерних категорий
array_push($term_ids, $term_id); // добавим ID текущей категории
$post_ids = get_objects_in_term($term_ids, 'category');
if ($post_ids && !is_wp_error($post_ids)) {
$tags = wp_get_object_terms($post_ids, 'post_tag');
if ($tags && !is_wp_error($tags)) {
$list = [];
foreach ($tags as $tag) {
$list[] = ''. esc_html($tag->name) .'';
}
echo '- '. implode("
n- ", $list) .'
';
}
}
}
Примечания
- Глобальные переменные:
wpdb— это объект абстракции базы данных WordPress.
Журнал изменений
- С версии 2.3.0: Функция была введена в WordPress.