get_taxonomies() — получает список всех зарегистрированных таксономий

Функция возвращает массив, состоящий из названий таксономий (или их объектов).

$taksonomii = get_taxonomies();
// так как $taksonomii - это массив, то давайте пропустим его через цикл
foreach( $taksonomii as $taksonomiya ) {
	echo $taksonomiya . '<br />';
}

Для чистого сайта на WP результат будет следующим:

category
post_tag
nav_menu
link_category
post_format

Хочу отметить, что в большинстве примеров, которые вы найдёте в интернете, действие функции этим и ограничивается.

То есть функция get_taxonomies() в основном используется для получения названий таксономий, которые в дальнейшем можно использовать в других функциях, таких как например get_the_terms().

Однако мы также можем получить и целые объекты таксономий со всей сопутствующей информацией.

Объект таксономии в WP

Суть следующего примера в точности такая же, как и предыдущего — вывести названия всех зарегистрированных таксономий, каждый с новой строки.

Первый параметр оставляем пустым, про него я расскажу чуть позже.

Для того, чтобы функция get_taxonomies() возвращала массив объектов, её второй параметр должен содержать любую строку, отличную от names, то есть:

  • names — функия возвращает массив строковых значений, а именно — названий таксономий,
  • любая_строка — функция возвращает массив объектов таксономий, в качестве параметра я указал objects чисто для наглядности.
$args = array(); // пустой массив пока что
$taksonomii = get_taxonomies( $args, 'objects' ); 
foreach( $taksonomii as $taksonomiya ) {
	echo $taksonomiya->name . '<br />';
}

В примере я использовал echo $taksonomiya->name для вывода названия таксономии, давайте же теперь разберемся со всеми параметрами объекта.

Параметры объекта таксономии

Хочу также отметить что все эти параметры (кроме buitin) вы можете использовать при создании собственной таксономии.

$taksonomiya->labels
(объект) Ярлыки (надписи), которые используются в интерфейсе админки WordPress, к примеру для рубрик он выглядит следующим образом:
Массив $labels для таксономии рубрик
$taksonomiya->label
(строка) Множественное число названия таксономии, обычно совпадает с $taksonomiya->labels->name.
$taksonomiya->description
(строка) Описание таксономии, которое по умолчанию нигде не отображается, но его можно задать при регистрации таксономии.
$taksonomiya->hierarchical
(логическое) Равно единице, если таксономия имеет иерархию.
$taksonomiya->object_type
(массив) Массив из названий поддерживаемых типов постов, например для рубрик array('post'). Изменять этот массив для уже зарегистрированных таксономий позволяет функция register_taxonomy_for_object_type().
$taksonomiya->_builtin
(логическое) Является ли данная таксономия встроенной в WordPress по умолчанию. 1 — да.
$taksonomiya->callback
(строка) Название возвратной функции для отображения метабокса данной таксономии. Если при регистрации не задана пользователем, то по умолчанию имеет значение post_categories_meta_box для таксономий с иерархией и post_tags_meta_box для таксономий без иерархии. Если задано false, то метабокс не будет отображаться вообще.
$taksonomiya->public
(логическое) Из названия данного параметра понятно, что он имеет отношение к отображению таксономии. Сам по себе он мало что значит, но от него напрямую зависят значения по умолчанию следующих далее параметров объекта.
$taksonomiya->show_in_nav_menus
(логическое) Можно ли выбирать элементы данной таксономии при создании меню. Если не задано, то эквивалентно значению $taksonomiya->public.

Пример отображения таксономии игровых платформ в меню.
$taksonomiya->show_ui
(логическое) Отображается ли в админке интерфейс для данной таксономии. Если не задано, то эквивалентно значению $taksonomiya->public.

Пример отображения произвольной таксономии в админке WordPress
$taksonomiya->show_tagcloud
(логическое) Можно ли отображать элементы данной таксономии в облаке меток. Если не задано, то эквивалентно значению $taksonomiya->show_ui.
$taksonomiya->show_in_quick_edit
(логическое) Будет ли отображаться таксономия в панели быстрого редактирования. Если не задано, то эквивалентно значению $taksonomiya->show_ui.

Пример отображения таксономии в меню быстрого редактирования записи.
$taksonomiya->show_admin_column
(логическое) Нужно ли автоматически добавляться колонку этой таксономии в таблицу поддерживаемых ею типов записей. Если не задан, то false по умолчанию.

Пример колонки таксономии в таблице записей.
$taksonomiya->rewrite
(логическое|массив) Содержит либо массив настроек постоянных ссылок для этой таксономии, либо равен false, если постоянные ссылки для неё отключены:

  • slug (строка) — собственно то, что отображается в URL, напрмиер /tag/, если не задан, то соответсвует названию таксономии,
  • with_front (логическое) — нужно ли в URL использовать $wp_rewrite->front (по умолчанию false), о том, что это такое, подробнее здесь,
  • hierarchical (логическое) — будут ли добавляться в URL также ярлыки родительских элементов таксономии (по умолчанию — false),
  • ep_mask — маска, по умолчанию EP_NONE.
$taksonomiya->query_var
(строка|логическое) Параметр, который используется в WP_Query, а также в URL, например /?platform=$название_платформы. Если установлено значение false, то метод использования в URL уже не прокатит.
$taksonomiya->sort
(логическое) Будет ли данная таксономия запоминать порядок присвоения своих элементов к постам.
$taksonomiya->update_count_callback
(строка) Название функции, которая ведёт подсчет объектов, присвоенных к элементам данной таксономии (запускается как хук после публикации/обновления поста).

Фильтр полученных результатов

Вот мы и подошли к тому функционалу функции, использование которого я пока что ещё не видел нигде.

Для начала я хочу вам сказать, что по сути всё, чем занимается функция get_taxonomies() — это работает уже с готовым массивом объектов таксономий $wp_taxonomies. Так что если проблем с объектами PHP у вас нет, то вы также можете использовать этот глобальный массив напрямую.

Так вот, мы уже рассмотрели, как функция может вывести массив названий таксономий, как обратиться к элементам объекта, теперь остановимся на двух параметрах функции, которые позволяют фильтровать полученный результат, к примеру давайте получим все встроенные _builtin таксономии с иерархией hierarchical.

// в $args мы просто перечисляем все параметры объекта таксономии, которые нас интересуют
$args = array(
	'hierarchical'   => true,
	'_builtin' => true
);
 
// 'and' (И - все значения параметров $args должны соответстовать - по умолчанию),  'or' (ИЛИ - хотя бы одно значение $args должно соответствовать)
$operator = 'and';
$taksonomii = get_taxonomies( $args, 'objects', $operator );

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

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Владимир: и на третьей строке не хватает скобки ) закрывающей if :)

  • Миша: Добрый вечер! Рекомендую получить ID пользователя через функцию get_current_user_id().

  • Дмитрий: Миша, подскажите пожалуйста, я использую такой редирект, но он не срабатывает: add_action( 'template_redirect', funct...

  • Миша: Ну как не определена - это аргумент функции. Или я просто вас не до конца понимаю.

  • Артем: Ага, понял. Вот только почему $args? Она же нигде не определена, по логике должна быть переменная $true_field_params или...