get_object_taxonomies

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

Не делает запросов, а просто сверяет данные из глобальной переменной $wp_taxonomies.
✈ 1 раз = 0.000055с = очень быстро | 50000 раз = 0.90с = очень быстро

Хуков нет.

Возвращает

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

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

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

В каком виде возвращать результат. Может быть:

names – вернет только названия таксономий
objects – вернет объекты таксономий

По умолчанию: ‘names’

Примеры

#1 Названия таксономий для типа поста

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
)
*/

Код из


wp-includes/taxonomy.php

WP 4.7.2

<?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;
}

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


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

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