WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

get_object_taxonomies() WP 2.3

Получает таксономии относящиеся к указанному типу записи (типу поста) или к переданному объекту.

Не делает запросов, а просто сверяет данные из глобальной переменной $wp_taxonomies.

Является основой для: is_object_in_taxonomy(), get_the_taxonomies()
✈ 1 раз = 0.000055с = очень быстро | 50000 раз = 0.90с = очень быстро

Хуков нет.

Возвращает

Массив. Все названия или объекты таксономий относящихся к указанному типу записи или другому объекту.

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

get_object_taxonomies( $object, $output = 'names' );
$object(строка/массив/объект) (обязательный)
Название типа записи, массив названий типов записей или объект отдельной записи (WP_Post, $post).
$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
		)

	[post_tag] => stdClass Object
		(
			...
		)

	[post_format] => stdClass Object
		(
			....
		)

)
*/

#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( array('post','mypost') );

/* $tax_names
Array
(
	[0] => category    // такса post
	[1] => post_tag    // такса post
	[2] => post_format // такса post
	[3] => mypost_tag  // такса mypost
	[4] => mypost_cat  // такса mypost
)
*/

Код get_object_taxonomies: wp-includes/taxonomy.php VER 4.9.8

<?php
function get_object_taxonomies( $object, $output = 'names' ) {
	global $wp_taxonomies;

	if ( is_object($object) ) {
		if ( $object->post_type == 'attachment' )
			return get_attachment_taxonomies( $object, $output );
		$object = $object->post_type;
	}

	$object = (array) $object;

	$taxonomies = array();
	foreach ( (array) $wp_taxonomies as $tax_name => $tax_obj ) {
		if ( array_intersect($object, (array) $tax_obj->object_type) ) {
			if ( 'names' == $output )
				$taxonomies[] = $tax_name;
			else
				$taxonomies[ $tax_name ] = $tax_obj;
		}
	}

	return $taxonomies;
}

Cвязанные функции

Из раздела: Для записей

Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться