is_object_in_taxonomy

Проверяет связан ли указанный тип записи с указанной таксономией.

В $object_type можно указать несколько типов записей для проверки.

✈ 1 раз = 0.000029с = очень быстро | 50000 раз = 0.24с = очень быстро PHP 7.1.1, WP 4.7.2

Хуков нет.

Возвращает

true/false. True – если объект связан с таксономией, false – если нет.

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

if( is_object_in_taxonomy( $object_type, $taxonomy ){
	// проверка пройдена
}
$object_type(строка/массив/объект)
Название типа записи, массив названий типов записей или объект отдельной записи (по нему будет получен тип записи) (WP_Post, $post).
$taxonomy(строка)
Название таксономии, привязку к которой нужно проверить (к которой должен быть привязан указанный в $object_type тип записи, типы записей или объект записи).

Примеры

#1 Демонстрация работы функции

Простая проверка:

if( is_object_in_taxonomy( 'post', 'category' ) ){
	// у типа записи post есть таксономия category
}

Проверка по переданному объекту:

if( is_object_in_taxonomy( $post, 'category' ) ){
	// у типа записи к которому относится запись $post есть таксономия category
}

Проверка сразу нескольких типов записей (сложно представить когда это может быть нужно, но так можно):

if( is_object_in_taxonomy( array('post','mypost'), 'category' ) ){
	// у типа записи post или mypost есть таксономия category
}

#2 Выведем список терминов таксономии, если она связана с типом записи

Мы делаем форму для добавления нового типа записи из фронтенда.

Теперь допустим, мы заранее не знаем связан ли наш тип записи с таксономией. Т.е. мы создали новый тип записи и к нему может быть подключена таксономия рубрик (category), а может быть и не подключена.

Если таксономия category подключена, то нам нужно вывести выпадающий список всех рубрик.

Этот код показывает, как сделать такую проверку.

// Выведем список рубрики, если таксономия рубрик подключена к произвольному типу записи
$post_type = 'mypost'; // наш произвольный тип записи
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',
		//'selected'        => $cat
	);

	echo '<label>Выберите рубрику:</label>';
	wp_dropdown_categories( $dropdown_options );
}

Код из


wp-includes/taxonomy.php

WP 4.7.2

<?php
function is_object_in_taxonomy( $object_type, $taxonomy ) {
	$taxonomies = get_object_taxonomies( $object_type );
	if ( empty( $taxonomies ) ) {
		return false;
	}
	return in_array( $taxonomy, $taxonomies );
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *