WordPress как на ладони
wordpress jino

is_tax() WP 2.5

Срабатывает на архивной странице пользовательской таксономии. Условный тег.

Возвращает true, если зарегистрирована новая таксономия и пользователь зашел на страницу элемента этой таксономии (термина).

Аналог is_category(), is_tag(), но не заменяет их, а работает только с новыми произвольными таксономиями. Т.е. is_tax() вернет false на страницах архивов рубрик и меток!

Возвращает false, если для таксономии не предусмотрен параметр запроса во фронт-энде. Т.е. если при регистрации таксономии параметр query_var установлен в false. Смотрите: register_taxonomy().

Если нужно проверить находится ли запись в таксономии, используйте has_term()

Работает на основе: WP_Query::is_tax()
✈ 1 раз = 0.000017с = очень быстро | 50000 раз = 0.02с = скорость света PHP 7.0.2, WP 4.4.2

Хуков нет.

Возвращает

true или false.

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

if( is_tax( $taxonomy, $term ) ){
	// это таксономия...
}
$taxonomy(строка/массив)
Название таксономии (slug). Можно указать несколько таксономий в массиве.
По умолчанию: ''
$term(строка/массив/число)
Название, ярлык или ID элемента таксономии (например: рубрики, метки).
По умолчанию: ''

Примеры

#1. Проверим, что мы находимся на странице архива таксономии

Ниже несколько примеров, когда функция is_tax() вернет true (сработает).

is_tax();
// когда отображается страница любой таксономии.

is_tax( 'channel' );
// когда выводятся записи таксономии 'channel', для любого элемента этой таксономии.

is_tax( 'channel', 'BBC1' );
// когда выводятся записи таксономии 'channel' для элемента (рубрики) 'BBC1'.

is_tax( 'channel', array( 'BBC1', 'SNN' ) );
// когда выводятся записи таксономии 'channel' для элементов (рубрик) 'BBC1' или 'SNN'.

2. Особенность с таксономией «Формат Поста»

Форматы постов в WP реализованы через таксономии. Но ярлык элемента таксономии в них не используется как есть, как это у других такс, а к нему добавляется префикс post-format-.

Например, есть формат поста «Aside» с ярлыком «aside». Его название будет равно post-format-aside.

if( is_tax( 'post_format' ) ){
	// архивная страница для любого "Формата Поста".
}

if( is_tax( 'post_format', 'post-format-aside' ) ){
	// архивная страница "Формата Поста" aside.
}

Код is tax: wp-includes/query.php VER 4.9.1

<?php
function is_tax( $taxonomy = '', $term = '' ) {
	global $wp_query;

	if ( ! isset( $wp_query ) ) {
		_doing_it_wrong( __FUNCTION__, __( 'Conditional query tags do not work before the query is run. Before then, they always return false.' ), '3.1.0' );
		return false;
	}

	return $wp_query->is_tax( $taxonomy, $term );
}

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

Из метки: Условные теги (типов страниц и запросов )

Еще из метки: Условные теги (все)

Еще из раздела: Запросы

is_tax 7 комментариев
  • Владимир cайт: thenest.ru

    is_tax не возвращает true на страницах , если при добавлении пользовательской таксономии задан параметр query_var отличный от дефолтного.

    1
    Ответить5.5 лет назад #
  • campusboy1951 cайт: www.youtube.com/c/wpplus

    Я не много не понял пункта "Особенность с таксономией", это типа можно сделать аналог условного тега is_post_type_archive?

    1
    Ответитьгод назад #
    • Kama4697

      Нет это исключение для форматов постов. Форматы постов реализованы через таксономии тоже... Там ярлык элемента таксономии не используется как есть, как у других такс, а к нему добавляется префикс post-format-.

      1
      Ответитьгод назад #
  • Андрей

    Подскажите, как правильно указать несколько таксономий с помощью массива
    Вот такой вариант почему-то не срабатывает
    if (is_tax (array('razdel' => 'love', 'razdel' => 'shkolo' )) {

    • campusboy1951 cайт: www.youtube.com/c/wpplus

      Может так?

      if (is_tax ('razdel', array('love', 'shkolo')) {
      1
    • Андрей

      Хотя все получилось настроить, в другом разделе вашего сайта нашел схожее решение

      $taxonomy = razdel;
      $term = (array('love', 'shkolo' )); 
      if( is_tax( $taxonomy, $term ) ){

Здравствуйте, !

Ваш комментарий
Предпросмотр