Руководство по условным тегам WordPress: теги с 1 по 13

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

Во второй части мы рассмотрим первых 13 условных тегов, а в целом в пяти статьях (включая эту), я приведу полное руководство по всем 65 условным тегам, описанным в Кодексе WordPress. Не забудьте ознакомиться с первой статьей этой серии, если вы этого еще не сделали.

1. Проверка, находимся ли мы на «Индексной странице записей блога «: is_home()

Этот условный тег проверяет, является ли отображаемая страница индексной страницей записей блога. В былые времена, когда WordPress был просто «блог-платформой«, на домашней странице отображался список последних записей в блоге. Но после того как WordPress вырос в полноценную систему управления контентом, название is_home() немного устарело.

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

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

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

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

<?php

if ( is_home() ) {

    _e( 'Welcome to my great blog!', 'translation-domain' );

}

?>

2. Проверка, является ли текущая тема дочерней: is_child_theme()

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

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

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

3. Проверка, принадлежит ли запись данной категории: in_category()

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

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

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

  • $category (array, string, обязательный параметр): ID, название категории или массив этих элементов. (По умолчанию: нет);
  • $post (object, int, необязательный параметр): запись (ID или объект) для проверки. По умолчанию: текущая запись.

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

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

Вот, что вам нужно сделать:

<?php

// Стандартный цикл.
if ( have_posts() ) {

    while( have_posts() ) {

        the_post();

        if ( in_category( '7' ) ) { ?>

            <div class="post post-announcement">

        <?php } else { ?>

            <div class="post">

        <?php } ?>

                <h2>
                    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                </h2>

                <div class="post-content">
                    <?php the_content(); ?>
                </div>

            </div><!-- .post -->

    <?php }

} else {

    echo '<p>' . __( 'Извините, записей, удовлетворяющих заданным критериям не найдено posts.', 'translation-domain' ) . '</p>';

}

?>

4. Проверка, используется ли «шаблон страницы»: is_page_template()

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

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

  • $template (string, необязательный): Имя шаблона — с расширением. Значения по умолчанию нет.

5. Проверка, является ли страница страницей архива: is_archive()

На WordPress-сайте может быть много разновидностей архивов: архивы по дате, архивы категорий, тегов, архивы авторов, архивы пользовательских таксономий… Но если вы хотите установить, является ли страница страницей архива, is_archive() поможет вам в этом: этот условный тег проверяет, отображается в данный момент страница архива или нет.

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

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

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

Допустим, вы хотите вывести определенный текст перед заголовками записей на странице архива.

Вот что вам нужно сделать:

<?php

add_filter( 'the_title', 'alter_title_in_archives' );

function alter_title_in_archives( $title ) {

    if ( is_archive() && is_main_query() ) {

        return __( 'Archive', 'translation-domain' ) . ' &ndash; ' . $title;

    }

    return $title;

}

?>

6. Проверка, является ли страница «Архивом по дате»: is_date()

Архивы по дате могут разбиваться на архивы за год, за месяц и за день; но если вы хотите проверить является ли страница страницей архива по дате, вы можете использовать условный тег is_date().

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

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

7. Проверка, активен ли в данный момент заданный виджет: is_active_widget()

Вам может понадобиться определить, активен виджет или нет. Условный тег is_active_widget() проверяет, отображается ли в данный момент виджет.

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

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

  • $callback (string, необязательный): Обратный вызов виджета для проверки. По умолчанию: FALSE;
  • $widget_id (int, необязательный): ID виджета. Значения по умолчанию нет;
  • $id_base (string, необязательный): ID базы виджета, созданного через расширения WP_Widget. Значения по умолчанию нет;
  • $skip_inactive (bool, необязательный): Не принимать ли во внимание неактивные виджеты. (По умолчанию: TRUE).

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

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

Вот что вам нужно сделать:

<?php

// источник: http://codex.wordpress.org/Function_Reference/is_active_widget

if ( is_active_widget( false, false, $this->id_base, true ) ) {

    wp_enqueue_script( 'jquery' );

}

?>

8. Проверка, является ли страница единственной записью в блоге: is_single()

Один из самых популярных условных тегов is_single() поможет узнать, является ли запись единственной на странице. Он определяет любые типы записей, кроме вложений и страниц. И если вы укажете ID, заголовок или короткое имя записи (или массив этих элементов), то можете также определить конкретную запись.

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

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

  • $post (string, array, необязательный): ID, заголовок или короткое имя записи (или массив этих элементов). Значения по умолчанию нет.

9. Проверка существует ли заданный адрес электронной почты в таблице пользователей: email_exists()

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

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

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

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

  • $email (string, необязательный): E-mail адрес для проверки.

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

Предположим, вы разрабатываете плагин, который формирует список адресов электронной почты, основываясь на данных пользователей. Данный тег позволяет добавлять и удалять для пользователей несколько дополнительных адресов электронной почты. Но вы не хотите удалять регистрационные адреса пользователей.

Вот что вам нужно сделать:

<?php

$email_address = get_email_from_some_function();

if ( email_exists( $email_address ) ) {

    wp_die( __( 'Sorry champ, you can't delete a user from this list.', 'translation-domain' ) );

}

?>

10. Проверка, имеет ли данный тип записей иерархическую структуру: is_post_type_hierarchical()

Как и для страниц, в WordPress вы можете задавать иерархию для новых пользовательских типов записей. И условный тег is_post_type_hierarchical() позволяет проверить, имеет ли данный тип записей иерархическую структуру или нет.

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

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

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

11. Проверка, является ли запись «важной»: is_sticky()

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

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

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

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

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

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

Вот что вам нужно сделать:

<?php

if ( is_sticky() ) {

    echo '<div class="sticky-ribbon"></div>';

}

?>

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

is_admin() позволяет нам определить, находимся ли мы в данный момент в разделе front-end или back-end, поэтому этот условный тег является одним из самых популярных. Как и предполагает его название, тег проверяет, находимся ли мы в данный момент в панели администрирования WordPress.

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

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

13. Проверка, является ли страница страницей «архива категории»: is_category()

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

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

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

  • $category (string, array, необязательный): ID, название, slug категории или массив этих элементов. Значения по умолчанию нет.

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

Допустим, вы хотите подключать альтернативную боковую панель для вывода архива категории «Новости«.

Вот что вам нужно сделать:

<?php

if ( is_category() ) {

    // Загрузка sidebar-news.php.
    get_sidebar( 'news' );

} else {

    // Загрузка sidebar.php.
    get_sidebar();

}

?>

Заключение

В этой статье мы рассмотрели 13 из 65 условных тегов, описанных в кодексе WordPress. В следующих частях мы рассмотрим оставшиеся 52. Если у вас возникли какие-либо вопросы или комментарии, напишите нам. Если вам понравилась эта статья, не забудьте поделиться со своими друзьями ссылкой!

Продолжим в следующей части!

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