Руководство по условным тегам в WordPress. Теги c 27 по 39

В этой серии статей мы знакомимся с одной из замечательных особенностей WordPress: условными тегами. В этой части, мы будем продолжать углубляться и рассмотрим новые условные теги. Для более ясного понимания темы рекомендую ознакомиться с предыдущими частями данной серии.

27. Проверка, является ли страница «ежемесячным архивом»: is_month()

В WordPress «ежемесячный архив» один из наиболее часто используемых типов архивных страниц. Если вам нужно определить, запущен ли ваш код на странице с типом «ежемесячный архив», условный тег is_month() поможет вам в этом.

Допустимые параметры

Этот условный тег не использует параметров.

28. Проверка возможностей темы: current_theme_supports()

В процессе разработки плагинов вам может понадобиться определить, поддерживает ли выбранная тема иконки, виджеты, какой тип записей использует, есть в ней пользовательские заголовки или нет. Все это можно сделать с помощью условного тега current_theme_supports().

Допустимые параметры

У этого условного тега только один параметр:

  • $feature (тип «string», необязательный): Имя характеристики темы. Значения по умолчанию нет.

Принимаемые значения:

  • ‘post-thumbnails’;
  • ‘post-formats’;
  • ‘custom-header’;
  • ‘custom-background’;
  • ‘menus’;
  • ‘automatic-feed-links’;
  • ‘editor-style’;
  • ‘widgets’;
  • ‘html5’.

Пример использования условного тега current_theme_supports()

Предположим, что вы разрабатываете плагин для тем WordPress, которые поддерживают возможность установки пользовательских фонов. Ваш плагин не будет работать в темах, которые не поддерживают пользовательские фоны, и вам нужно будет отобразить сообщение об ошибке в панели администрирования.

Вот как можно это сделать:

<?php

add_action( 'admin_notices', 'custom_bg_feature_warning' );

function custom_bg_feature_warning() {

    if ( ! current_theme_supports( 'custom-background' ) ) {

    echo '<div class="error">
              <p>' . __( 'Этот плагин поддерживает темы с возможностью установки 
пользовательских фоновых изображений.', 'translation-domain' ) . '</p>
          </div>';

    }

}

?>

29. Проверяем, активен ли указанный плагин: is_plugin_active()

Работая только в панели администрирования, условный тег is_plugin_active() помогает узнать, активен или нет определенный плагин. Этот тег поможет в случаях, если вы пишите дополнения к популярным плагинам (например, к WooCommerce) или под фреймворки, устанавливаемые с помощью расширений (как Redux Framework).

Допустимые параметры

У этого условного тега только один параметр:

  • $plugin (тип «string», обязательный): Имя плагина или директории. Значения по умолчанию нет.

30. Проверяем, указывает ли URL на локальное вложение: is_local_attachment()

Вложения в WordPress — отличное решение в случае их правильного использования, но как узнать, указывает ли URL на локальное вложение? Если в процессе разработки вы работаете со ссылками, условный тег is_local_attachment() может быть очень полезен: он проверяет, указывает ли данный URL на локальное вложение или нет.

Допустимые параметры

У этого условного тега только один параметр:

  • $url (тип «string», обязательный): URL для проверки. Значения по умолчанию нет.

Пример использования условного тега is_local_attachment()

Представьте, что вы разрабатываете плагин и вам нужно проверить ссылки (которые сгенерированы созданной вами функцией) на предмет локальности вложений:

<?php

$url = some_url_generator_function();

if ( is_local_attachment( $url ) ) {

    _e( 'Да, это локальное вложение!', 'translation-domain' );

} else {

    _e( 'Нет, это не локальное вложение.', 'translation-domain' );

}

?>

31. Проверка, осуществляется ли вывод поста по времени его публикации: is_time()

Вы знаете о том, что в состав WordPress входит тип архивных страниц, основанных на времени и дате их создания: месяцах, часах, минутах и даже секундах?

Это не означает, что можно получить архивные записи за 18:30 22 февраля 2014 года, но вы можете создать подобные записи с помощью класса WP_Query. Если нужно проверить запись на принадлежность к архиву, созданному на временной основе, используйте условный тег is_time().

Допустимые параметры

Этот тег не поддерживает параметры.

32. Проверяем текущую локаль на принадлежность к RTL: is_rtl()

В некоторых странах (большей частью это страны Среднего Востока) текст пишется справа налево. Как WordPress разработчику, вам нужно учитывать потребности всех пользователей вашей системы. Если вы хотите, чтобы ваш плагин или тема корректно работали с RTL (right to left, справа налево) текстом, следует использовать is_rtl() для определения, принадлежит ли локаль к RTL.

Допустимые параметры

Этот условный тег не использует параметров.

Пример использования условного тега is_rtl()

Большинство веб — дизайнеров создают отдельные css – стили для RTL локалей. Это обычная практика.

И если вы хотите загружать стили для RTL по условию, вот код, с помощью которого это можно реализовать:

<?php

add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_styles' );

function mytheme_enqueue_styles() {

    if ( is_rtl() ) {

        wp_enqueue_style( 'style-rtl', plugins_url( '/css/style-rtl.css', __FILE__ ) );

    }

}

?>

33. Проверка, является ли страница архивной с пользовательской таксономией: is_tax()

Условный тег is_tag() может определять вывод архивной страницы по метке, но не может определять пользовательскую таксономию. Для этого используйте условный тег is_tax(). По умолчанию, он определяет все архивные страницы с таксономией. Но у тега есть два параметра, с помощью которых вы можете отсеять ненужные архивные страницы.

Допустимые параметры

Условный тег может использовать два параметра:

  • $taxonomy (тип «array/string», необязательный): slug таксономии или массив элементов. Значения по умолчанию нет;
  • $term (тип “array/string/integer», необязательный): ID условия, имени, slug или массив этих данных. Значения по умолчанию нет.

34. Проверка, является ли данная страница вложением: is_attachment()

Во время создания плагина (или темы) вам может понадобиться узнать, сейчас отображается страница вложения или нет. Условный тег is_attachment() поможет в решении этой задачи: он возвращает значение TRUE на странице вложении и значение FALSE на остальных страницах.

Допустимые значения

Этот условный тег не использует параметров.

Пример использования тега is_attachment()

Допустим, вы хотите отобразить ссылку «Назад к записи» над вложением.

Вот как это делается:

<?php

if ( is_attachment() ) {

    // Получаем родителя вложения.
    $parent = get_post_field( 'post_parent', $id );

    // Получаем ссылку родительской записи.
    $parent_link = get_permalink( $parent );

    // Отображаем ссылку.
    echo '<a href="' . $parent_link . '" class="parent-post-link">' . __( 
'Назад к записи', 'translation-domain' ) . '</a>';

}

?>

35. Проверяем, существует ли указанный элемент таксономии: term_exists()

Условный тег term_exists() проверяет, существует ли указанный элемент таксономии, и возвращает ID значения (если не определен параметр $taxonomy) или же массив идентификаторов таксономии. Если запрашиваемое значение не существует, то возвращается 0 или NULL.

Допустимые параметры

Этот условный тег может использовать три параметра:

  • $term (тип «string/integer», обязательный): Имя или ID значения. Значения по умолчанию нет;
  • $taxonomy (тип «string», необязательный): Имя таксономии. Значение по умолчанию: ‘ ‘;
  • $parent (тип «integer», необязательный): ID родительской таксономии (чтобы ограничить поиск). Значение по умолчанию: 0.

36. Проверяем наличие меток у записи: has_term()

Мы можем использовать условный тег has_tag(), если хотим найти тег в записи. А что если нам нужно сделать то же самое, только со значением пользовательской таксономии? Условный тег has_term() позволяет использовать третий параметр, который определяет нужное значение пользовательской таксономии.

Забавный факт: Условный тег has_tag() использует тег has_term(), чтобы вернуть значения TRUE или FALSE! И так же, как и функция has_tag(), тег has_term() позволяет определять более чем одно значение, но только для одной таксономии.

Допустимые параметры

Этот условный тег может использовать три параметра:

  • $term (тип «array/string/integer», необязательный): Имя, ID, slug значения или же массив этих данных. Значение по умолчанию: ‘ ‘;
  • $taxonomy (тип «string», обязательный): Имя таксономии. Значение по умолчанию: ‘ ‘;
  • $post (тип «object/integer», необязательный): Запись на проверку. Значение по умолчанию: NULL.

Пример использования условного тега has_term()

Допустим, вы запускаете сайт электронного магазина и собираетесь сменить поставщика ноутбуков Dell. Поэтому вам нужно известить ваших покупателей о том, что доставка этого товара будет задержана на неделю.

Код ниже позволит сделать это:

<?php

if ( has_term( 'dell', 'laptops' ) ) {

    echo '<div class="above-product-warning"><strong>' . __( 'Внимание!', 
'translation-domain' ) . 
':</strong> ' . __
( 'Мы меняем поставщика ноутбуков Dell, поэтому доставка будет задержана на неделю. 
Приносим извинения!', 'translation-domain' ) . '</div>';

}

?>

37. Проверяем, является ли комментарий трэкбэком: is_trackback()

Если хочешь проверить комментарий на трэкбэк, то для этого стоит использовать условный тег is_trackback().

Допустимые параметры

Этот тег не использует параметров.

38. Проверяем, использует ли WordPress мультисайтовую инсталляцию: is_multisite()

Если вам нужно запускать код в обычной версии WordPress в нормальном режиме, а в мультисайтовой версии изменить его поведение, то условный тег is_multisite() поможет вам определить, включена ли ее поддержка.

Допустимые параметры

Этот тег не использует параметров.

Пример использования условного тега is_multisite()

К примеру, вы разрабатываете плагин, и если мультисайтовость включена, плагин использует иной класс. Вот как мы это реализуем:

<?php

if ( is_multisite() ) {

    require_once( 'path/to/multisite-class.php' );

}

?>

39. Проверяем, выводится ли на странице архива произвольный тип записи: is_post_type_archive()

Иногда вам требуется, чтобы ваш код определял, отображается ли сейчас архивная страница пользовательского типа. Условный тег is_post_type_archive() делает следующее: он проверяет, направляется ли запрос на архивную страницу пользовательского типа.

Допустимые параметры

У этого условного тега только один параметр:

  • $post_types (тип «array/string», необязательный): Имя записи или массив этих данных. Значения по умолчанию нет.

Заключение

В этой части мы рассмотрели следующие несколько тегов из тех 65, которые указаны в официальной документации к WordPress. В следующей статье мы изучим оставшиеся 26 тегов. Если у вас появились вопросы или вы хотите оставить комментарий – сделайте это в форме ниже. А если статья вам понравилась – не забудьте ей поделиться!

До встречи в следующей части.

Перевод статьи “A Walkthrough on Conditional Tags in WordPress: 27 to 39” был подготовлен дружной командой проекта Сайтостроение от А до Я.