Руководство по условным тегам WordPress: Теги с 53 по 65

В этой серии статей мы рассматриваем один из основных элементов WordPress — условные теги. В данной части мы завершим описание оставшихся условных тегов. Не забудьте ознакомиться с предыдущими статьями этой серии.

53. Проверка, отображается ли в данный момент страница указанного типа: is_singular()

Это один из моих любимых условных тегов. is_singular() определяет, отображается ли в данный момент запись указанного типа. По сути, это сочетание трех условных тегов is_single(), is_attachment() и is_page(). Кроме этого, если вы зададите в качестве параметра тип записей (или массив типов записей), вы можете определять только те типы, которые вам нужны.

Принимаемые параметры

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

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

54. Проверка, работает ли функция в «Цикле»: in_the_loop()

Если я скажу, что цикл является базовым элементом кода WordPress, мало кто со мной не согласится. Условный тег in_the_loop() является одним из ключевых, потому что позволяет функциям определять, работают ли они внутри цикла или нет.

Принимаемые параметры

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

Пример применения in_the_loop()

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

<?php

function my_awesome_plugin_function() {

    if ( ! in_the_loop() ) {

        echo '<!-- ' . __( 'We're terribly sorry, but the', 'translation-domain' ) . ' <code>my_awesome_plugin_function()</code> ' . __( 'function of the plugin "My Awesome Plugin" must run inside WordPress Loops!', 'translation-domain' ) . ' -->';

    } else {

        // Запуск этого кода, потому что мы находимся внутри цикла!

    }

}

?>

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

В кодексе он определяется как противоположный условному тегу is_plugin_active(). Тег is_plugin_inactive() определяет, когда установленный плагин не активирован.

Принимаемые параметры

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

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

56. Проверка, отображается ли сейчас страница из «архива автора»: is_author()

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

Принимаемые параметры

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

  • $author (string/integer, необязательный): Имя пользователя или ID автора. Значения по умолчанию нет.

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

Предположим, что вы разрабатываете плагин, связанный с Google Analytics, и хотите установить «пользовательскую переменную«, чтобы отслеживать архивы авторов. Вот что вам нужно сделать:

<script>

/* JavaScript-код, связанный с Google Analytics. */

<?php

if ( is_author() ) {

    echo '_gaq.push( [ "_setCustomVar", 1, "' . __( 'Author Archives', 'translation-domain' ) . '", "' . esc_attr( get_query_var( 'author_name' ) ) . '" ] );' . "n";

}

?>

_gaq.push( [ "_trackPageview" ] );

</script>

57. Проверяем, находимся ли мы на странице пагинации: is_paged()

WordPress позволяет применять пагинацию для индексной страницы и архивов, чтобы разделить списки записей на последовательные страницы. С помощью условного тега is_paged() можно определить, находимся ли мы на одной из страниц пагинации (или нет) и что номер этой страницы больше 1.

Принимаемые параметры

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

58. Проверка, отображается ли в данный момент панель инструментов WordPress: is_admin_bar_showing()

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

Принимаемые параметры

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

Пример применения is_admin_bar_showing()

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

<?php

add_action( 'wp_enqueue_scripts', 'mytheme_admin_bar_styles' );

function mytheme_admin_bar_styles() {

    if ( is_admin_bar_showing() ) {

        wp_enqueue_style( 'mytheme-admin-bar', 'path/to/your/admin-bar.css' );

    }

}

?>

59. Проверка, является ли текущая страница архивом постов за день: is_day()

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

Принимаемые параметры

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

60. Проверка, подключен ли в данный момент заданный сайдбар: is_active_sidebar()

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

Принимаемые параметры

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

  • $sidebar (string/integer, обязательный): ID или название сайдбара. Значения по умолчанию нет.

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

Этот пример взят из темы Twenty Ten: в нем данный условный тег используется для загрузки указанного сайдбара при определенных условиях:

<?php

if ( is_active_sidebar( 'secondary-widget-area' ) ) { ?>

    <div id="secondary" class="widget-area" role="complementary">
        <ul class="xoxo">
            <?php dynamic_sidebar( 'secondary-widget-area' ); ?>
        </ul>
    </div> <!-- #secondary .widget-area -->

<?php } ?>

61. Проверка, существует ли заданное имя пользователя в системе ресурса: username_exists()

Третий условный тег, который возвращает не TRUE, а конкретное значение, это username_exists(). Этот условный тег проверяет заданное имя пользователя и возвращает его ID, если пользователь с таким именем существует. Если это не так, возвращается значение NULL.

Принимаемые параметры

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

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

62. Проверка, отображается ли в данный момент страница «предварительного просмотра записи»: is_preview()

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

Принимаемые параметры

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

Пример применения is_preview()

Рекомендуется скрывать страницы предварительного просмотра от отслеживания кодом Google Analytics, поэтому скрипты Google Analytics можно включать следующим образом:

<?php

if ( ! is_preview() ) {

    echo '<script>
             <!-- Код Google Analytics. -->
         </script>';

}

?>

63. Проверка состояния заданного скрипта: wp_script_is()

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

Принимаемые параметры

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

  • $handle (string, обязательный): Имя скрипта (в нижнем регистре). Значения по умолчанию нет;
  • $list (string, необязательный): одно из четырех возможных значений — «registered«, «enqueued«, «done» (поставлен в очередь и выведен) или «to_do» (поставлен в очередь, но еще не выведен). Значение по умолчанию: «enqueued«.

64. Проверка состояния заданного стиля: wp_style_is()

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

Принимаемые параметры

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

  • $handle (string, обязательный): имя стиля (в нижнем регистре). Значения по умолчанию нет;
  • $list (string, необязательный): одно из четырех возможных значений — «registered«, «enqueued«, «done» (поставлен в очередь и выведен) или «to_do» (поставлен в очередь, но еще не выведен). Значения по умолчанию: «enqueued«.

Пример применения wp_style_is()

Допустим, вы разрабатываете тему с помощью фреймворка Bootstrap и создали пользовательскую тему Bootstrap. Нужно, чтобы основные CSS-файлы Bootstrap ставились в очередь загрузки первыми:

<?php

add_action( 'wp_enqueue_scripts', 'bootstrap_styles' );

function bootstrap_styles() {

    if ( wp_style_is( 'bootstrap-main' ) ) {

        wp_enqueue_style( 'my-custom-bootstrap-theme', 'path/to/custom-theme.css' );

    }

}

?>

65. Проверка, является ли таксономия иерархической: is_taxonomy_hierarchical()

Вы знаете, что категории имеют иерархическую структуру, и вы можете устанавливать родительские и дочерние категории. То же самое относится и к пользовательским таксономиям, если вы укажете это во время их создания. Чтобы установить, является ли таксономия иерархической, вы можете использовать условный тег is_taxonomy_hierarchical().

Принимаемые параметры

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

  • $taxonomy (string, обязательный): название таксономии. Значения по умолчанию нет.

Заключение

В этой части мы рассмотрели последние 13 из 65 зарегистрированных в WordPress условных тегов. В следующей (последней) части этой серии статей мы подытожим то, что вы узнали.

Если у вас возникли какие-либо вопросы или комментарии, напишите нам. Если вам понравилась эта статья, не забудьте поделиться со своими друзьями ссылкой!

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