Функция is_object_in_taxonomy()
в WordPress проверяет, связан ли указанный тип записи с конкретной таксономией. Это полезный инструмент для разработчиков, позволяющий динамически определять, можно ли использовать ту или иную таксономию для заданного типа записи.
is_object_in_taxonomy( string $object_type, string $taxonomy ): bool
Параметры
- $object_type(обязательный)
Тип объекта, для которого нужно проверить наличие связи с таксономией. Обычно это тип записи, например,'post'
или'page'
. Можно передать массив типов или объект поста для автоматического определения типа записи.- Тип данных:
string
,array
,WP_Post
.
- Тип данных:
- $taxonomy(обязательный)
Имя таксономии, для которой проверяется связь с указанным типом объекта.- Тип данных:
string
.
- Тип данных:
Возвращаемое значение
- bool — Возвращает
true
, если указанный объект связан с таксономией, иfalse
, если нет.
Описание
Функция is_object_in_taxonomy()
используется для того, чтобы узнать, может ли заданный тип записи (например, post
, page
или пользовательский тип) использовать конкретную таксономию (например, category
, post_tag
или любую другую зарегистрированную таксономию).
Эта функция будет полезна при динамическом создании пользовательских интерфейсов, когда необходимо показать, например, выпадающий список терминов только для тех типов записей, которые поддерживают определённую таксономию.
Пример 1: Проверка связи типа записи post
с таксономией category
Проверим, может ли тип записи post
использовать таксономию category
:
if ( is_object_in_taxonomy( 'post', 'category' ) ) {
echo 'Тип записи "post" связан с таксономией "category".';
}
Результат: Если тип записи post
связан с таксономией category
, выводится сообщение.
Пример 2: Проверка по объекту записи
Можно проверить наличие связи таксономии с типом записи, передав объект записи, например, $post
. В этом случае функция автоматически определит тип записи:
global $post;
if ( is_object_in_taxonomy( $post, 'category' ) ) {
echo 'Тип записи, к которому относится запись $post, связан с таксономией "category".';
}
Результат: Если запись принадлежит типу, поддерживающему таксономию category
, выводится сообщение.
Пример 3: Проверка нескольких типов записей
Иногда требуется проверить несколько типов записей одновременно. Это можно сделать, передав массив с типами записей:
if ( is_object_in_taxonomy( array( 'post', 'custom_post_type' ), 'category' ) ) {
echo 'Тип записи "post" или "custom_post_type" связан с таксономией "category".';
}
Результат: Если хотя бы один из типов записей (например, post
или custom_post_type
) поддерживает таксономию category
, выводится сообщение.
Пример 4: Вывод списка терминов таксономии, если она связана с типом записи
Предположим, у нас есть пользовательский тип записи, и нам нужно вывести выпадающий список всех рубрик (терминов таксономии category
), если она привязана к этому типу записи:
$post_type = 'custom_post'; // наш произвольный тип записи
if ( is_object_in_taxonomy( $post_type, 'category' ) ) {
$dropdown_options = array(
'show_option_all' => get_taxonomy( 'category' )->labels->all_items,
'hide_empty' => 0,
'hierarchical' => 1,
'show_count' => 0,
'orderby' => 'name',
);
echo '<label>Выберите рубрику:</label>';
wp_dropdown_categories( $dropdown_options );
}
Результат: Если пользовательский тип записи custom_post
связан с таксономией category
, будет выведен выпадающий список рубрик.
Пример 5: Проверка связи с пользовательской таксономией
Допустим, у нас есть пользовательская таксономия genre
, и мы хотим проверить, поддерживает ли её тип записи movie
:
if ( is_object_in_taxonomy( 'movie', 'genre' ) ) {
echo 'Тип записи "movie" связан с таксономией "genre".';
}
Результат: Если тип записи movie
поддерживает таксономию genre
, выводится сообщение.
Заключение
Функция is_object_in_taxonomy()
позволяет легко и быстро проверить, поддерживает ли тип записи определённую таксономию. Это особенно полезно при работе с пользовательскими типами записей и таксономиями, где необходимо динамически адаптировать интерфейс на основе доступных таксономий.