Руководство по условным тегам 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» , подготовленной дружной командой проекта Интернет-технологии.ру