get_taxonomies()
Получает список зарегистрированных таксономий. Можно ограничить список по нужным параметрам.
Хуков нет.
Возвращает
string[]|WP_Taxonomy[].
- массив названий, если параметр $output равен 'names'
- массив объектов таксономий, если параметр $output равен 'objects'.
Массив объектов таксономий представляет собой массив, описывающий подробно каждую таксономию.
Использование
get_taxonomies( $args, $output, $operator );
- $args(массив)
Массив параметров, которым должен соответствовать результат функции, т.е. указав нужные параметры, можно получить данные только о тех таксономиях, которые нам необходимы.
Параметры которые можно указать в массиве:
name- название таксономии;object_type- (массив) к каким типам записей прикреплена таксономия;hierarchical- true - покажет только древовидные таксономии;show_in_nav_menuscap- (объект) права;label- заголовок (название таксономии);labels- (объект) заголовки таксономии (различные названия);singular_labelshow_uishow_tagcloudpublic- true - получить публичные таксономии;update_count_callbackrewritequery_varmanage_capedit_capdelete_capassign_cap_builtin- false - исключить встроенные таксономии (например, category).
Полный список и что означает каждый параметр, смотрите в описании функции register_taxonomy().
По умолчанию: []
- $output(строка)
Вид в котором будет получен результат работы функции:
-
names- Получить только названия зарегистрированных таксономий. По умолчанию. objects- Получить массив объектов, содержащих полную информацию о таксономиях.
По умолчанию: "names"
-
- $operator(строка)
Логический оператор, определяющий, как обрабатывать несколько значений параметра $args. Принимает:
or- выбирает таксономии, в которых совпадает любой из указанных элементов $args.and- выбирает таксономии, в которых совпадают все элементы из $args.
По умолчанию: 'and'
Примеры
#1 Выведем на экран все зарегистрированные таксономии:
Получим массив названий всех зарегистрированных таксономий
$taxonomies = get_taxonomies();
foreach( $taxonomies as $taxonomy ) {
echo '<p>'. $taxonomy. '</p>';
}
#2 Получим только публичные таксономии
Выведем на экран список публичных ('public' => true) не встроенных таксономий (произвольных) ('_builtin' => false):
<?php
$args = [
'public' => true,
'_builtin' => false
];
$output = 'names'; // или objects
$operator = 'and'; // 'and' или 'or'
$taxonomies = get_taxonomies( $args, $output, $operator );
if( $taxonomies ){
foreach( $taxonomies as $taxonomy ){
echo '<p>'. $taxonomy. '</p>';
}
}
?>
#3 Получим таксономию 'genre'
Получим таксономию с названием 'genre' ('name' => 'genre') и выведем на экран название:
<?php
$args = [
'name' => 'genre'
];
$output = 'objects'; // или objects
$taxonomies = get_taxonomies( $args, $output );
if( $taxonomies ) {
foreach ( $taxonomies as $taxonomy ) {
echo '<p>' . $taxonomy->name . '</p>';
}
}
?>
#4 Получим все таксономии, которые используются в REST API
$rest_taxes = get_taxonomies( [ 'show_in_rest' => true ], 'names' ); print_r( $rest_taxes ); /* Array ( [category] => category [post_tag] => post_tag [nav_menu] => nav_menu [note_tag] => note_tag ) */
#5 Получим таксономии типа записи
Если запросить таксономии с определенным типом поста, например, как показано ниже, будут показаны только таксономии, связанные с этим типом поста. Если таксономия связана с несколькими типами постов, она не будет показана.
$args = [ 'object_type' => [ 'post' ] ]; $taxonomies = get_taxonomies( $args ); print_r( $taxonomies ); /* Array ( [category] => category [post_tag] => post_tag [post_format] => post_format ) */
Альтернативой является использование get_object_taxonomies().
Заметки
Global. WP_Taxonomy[]. $wp_taxonomies The registered taxonomies. |
Список изменений
| С версии 3.0.0 | Введена. |
Код get_taxonomies() get taxonomies WP 7.1
function get_taxonomies( $args = array(), $output = 'names', $operator = 'and' ) {
global $wp_taxonomies;
$field = ( 'names' === $output ) ? 'name' : false;
return wp_filter_object_list( $wp_taxonomies, $args, $operator, $field );
}