# Функция GET_OBJECT_TAXONOMIES() │ WP 2.3.0
Функция get_object_taxonomies() возвращает названия или объекты таксономий, которые зарегистрированы для запрашиваемого объекта или типа объекта (например, для поста).
## Пример использования
```php
$taxonomies = get_object_taxonomies('post');
Этот код вернет:
Array( 'category', 'post_tag' )
Используется в
is_object_in_taxonomy()get_the_taxonomies()
Время выполнения:
1 раз — 0.0000272 сек (очень быстро) | 50000 раз — 0.19 сек (очень быстро)
Версия PHP: 7.4.25, Версия WordPress: 6.0.1
Hooks: нет
Возвращаемое значение
Функция возвращает массив, который содержит названия или объекты всех таксономий для указанного типа объекта.
Синтаксис
get_object_taxonomies($object_type, $output);
- $object_type (обязательный) — имя типа объекта таксономии или объект (например, пост).
- $output — тип возвращаемого значения. Принимает значения 'names' (названия) или 'objects' (объекты). По умолчанию: 'names'.
Примеры работы функции
Пример 1: Названия таксономий для типа поста
$taxonomy_names = get_object_taxonomies('post');
print_r($taxonomy_names);
Результат:
Array
(
[0] => category
[1] => post_tag
[2] => post_format
)
Пример 2: Объекты таксономий для типа поста
Для получения таксономий в виде объектов для каждого типа поста:
$taxonomy_objects = get_object_taxonomies('post', 'objects');
print_r($taxonomy_objects);
Результат:
Array
(
[category] => stdClass Object
(
[hierarchical] => 1
[update_count_callback] =>
[rewrite] =>
[query_var] => category_name
[public] => 1
[show_ui] => 1
[show_tagcloud] => 1
[_builtin] => 1
[labels] => stdClass Object
(
...
)
...
[name] => category
[label] => Categories
)
...
)
Пример 3: Названия таксономий для объекта поста
Чтобы получить названия таксономий, поддерживаемых текущим постом, нужно передать полное значение объекта поста вместо имени типа:
add_action('wp_head', 'get_current_post_taxonomies');
function get_current_post_taxonomies() {
global $post;
$taxonomy_names = get_object_taxonomies($post);
print_r($taxonomy_names);
}
Результат:
Array
(
[0] => category
[1] => post_tag
[2] => post_format
)
Пример 4: Получение таксономий для нескольких типов постов
Можно получить таксономии для нескольких типов постов сразу без использования цикла. Например, если у нас есть два типа постов с таксономиями: post (стандартный) и mypost (пользовательский), то:
$tax_names = get_object_taxonomies(['post', 'mypost']);
Результат:
Array
(
[0] => category // таксономия для поста
[1] => post_tag // таксономия для поста
[2] => post_format // таксономия для поста
[3] => mypost_tag // таксономия для mypost
[4] => mypost_cat // таксономия для mypost
)
Если нужно получить все данные как объекты, а не только названия, то:
$tax_names = get_object_taxonomies(['post', 'mypost'], 'objects');
Примечания
- Глобальная переменная:
$wp_taxonomies— зарегистрированные таксономии.
Изменения
Функция была добавлена в версии 2.3.0.
Код функции
function get_object_taxonomies($object_type, $output = 'names') {
global $wp_taxonomies;
if (is_object($object_type)) {
if ('attachment' === $object_type->post_type) {
return get_attachment_taxonomies($object_type, $output);
}
$object_type = $object_type->post_type;
}
$object_type = (array) $object_type;
$taxonomies = array();
foreach ((array) $wp_taxonomies as $tax_name => $tax_obj) {
if (array_intersect($object_type, (array) $tax_obj->object_type)) {
if ('names' === $output) {
$taxonomies[] = $tax_name;
} else {
$taxonomies[$tax_name] = $tax_obj;
}
}
}
return $taxonomies;
}