get_object_taxonomies() WP 2.3.0

Отримує таксономії запису (типу посту) або до переданого об’єкту, що відносяться до зазначеного типу.

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

1 раз – 0.0000272 сек
(дуже швидко) | 50000 разів – 0.19 сек
(дуже швидко) |
PHP 7.4.25, WP 6.0.1

Хуків немає.

Повертає

Строку[]|WP_Taxonomy[]. Усі назви або об’єкти таксономій, що стосуються зазначеного типу запису або іншого об’єкта.

Використання

get_object_taxonomies( $object, $output = 'names' );
$object
(рядок/рядок[]/WP_Post) (обов’язковий)
Назва типу запису, масив назв типів записів або об’єкт окремого запису (WP_Post, $post).
$output
(рядок)

Яким чином повертати результат. Може бути:

names– поверне лише назви таксономій
objects– поверне об’єкти таксономій

За замовчуванням: ‘names’

Приклади

1

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

$taxonomy_names = get_object_taxonomies( 'post');
print_r ($ taxonomy_names);

/*
виведе:

Array
(
	[0] => category
	[1] => post_tag
	[2] => post_format
)
*/
0

#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] =>
		)

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

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

)
*/
0

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

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

нотатки

  • Global. WP_Taxonomy[]. $wp_taxonomies The registered taxonomies.

список змін

З версії 2.3.0Введено.

Код get_object_taxonomies() WP 6.0.2

function get_object_taxonomies( $object, $output = 'names' ) {
	Global $wp_taxonomies;

	if ( is_object( $object ) ) {
		if ( 'attachment' === $object->post_type ) {
			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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *