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

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

14. Проверяем, является ли открытая страница главной: is_front_page()

В WordPress, главной страницей («front page«) может быть как статическая страница WordPress, так и динамический список из последних записей блога (Настройки > Чтение) (Settings > Reading). Условный тег is_front_page() возвращает значение TRUE, когда отображена главная страница.

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

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

15. Проверяем, есть ли миниатюры у записи: has_post_thumbnail()

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

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

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

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

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

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

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

<?php

function mytheme_featured_image( $class = '' ) {

    global $post;

    $post_title = get_the_title();

    if ( has_post_thumbnail( $post->ID ) ) {

        $featured_image = get_the_post_thumbnail( $post->ID, 'thumbnail', array(
            'alt' => esc_attr( $post_title ),
            'class' => $class
        ) );

    } else {

        $featured_image = '<img src="' . get_stylesheet_directory_uri() . 
'/assets/default-thumb.jpg" alt="' . esc_attr( $post_title ) . '
" class="default-thumb ' . $class . '" />';

    }

    return $featured_image;

}

/*
 * Использование (внутри цикла):
 * echo mytheme_featured_image( 'my-custom-class' );
 */

?>

16. Проверка использования темой всплывающих окон для комментариев: is_comments_popup()

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

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

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

17. Проверка, является ли страница сообщением ошибки 404: is_404()

Ошибка «Страница не найдена» – наименее желаемая страница, которую мы хотим видеть, поэтому мы никогда не задумываемся о том, как работает система страниц 404. Условный тег is_404() определяет, является ли отображаемая в данный момент страница, страницей 404 ошибки.

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

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

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

Если вы разрабатываете плагин, который фиксирует адреса несуществующих ссылок на сайте, и хотите, чтобы функция срабатывала каждый раз, когда появляется страница 404, то делается это следующим образом:

<?php

add_filter( 'template_redirect', 'my_plugin_check_404_pages' );

function my_plugin_check_404_pages() {

    if ( is_404() ) {

        my_plugin_404_logger_function();

    }

}

?>

18. Проверка, существует ли таксономия: taxonomy_exists()

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

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

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

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

19. Проверка, отображает ли текущая страница результаты поиска: is_search()

Результаты поиска — важная часть сайтов на платформе WordPress. И если вы разрабатываете плагин или тему, то можете определять эти страницы с помощью условного тега is_search().

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

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

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

Допустим, что вам нужно включить в результаты поиска выдачу из Google по тому же запросу.

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

<?php

if ( is_search() ) {

    $search_query = get_search_query();

    echo '<div class="google-search">
<a href="https://www.google.com.tr/search?q=' . $search_query . '">
' . __( 'Искать с помощью Google', 'translation-domain' ) . '</a>';

}

?>

20. Проверка, является ли отображаемая архивной: is_tag()

Хотите по-разному обрабатывать архивные теги? Условный тег is_tag() сможет помочь вам в этом. Просто поместите имя тега, Slug (краткий URL записи) или ID (или же массив из них) в качестве параметра условного тега is_tag() .

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

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

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

21. Проверка записи на наличие короткого описания, заданного пользователем: has_excerpt()

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

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

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

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

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

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

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

<?php

if ( has_excerpt() ) {

    the_excerpt();

}

?>

22. Проверка, основной ли это запрос: is_main_query()

WordPress использует класс WP_Query для создания списка постов. Существует множество функций для использования в классеWP_Query, а is_main_query() одна из них. Этот условный тег определяет тип запроса: является ли он основным.

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

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

23. Проверка, имеет ли запись определенные теги: has_tag()

Иногда вам нужно проверить наличие тегов у записи, наличие которых будет влиять на то, какие действия к ней можно применить. Используйте условный тег has_tag() для проверки записи на наличие определенных вами тегов. (Заметьте, что можно искать более чем один тег).

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

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

  • $tag (тип ‘array/string’, необязательный): Имя тега, ID, Slug или же массив данных. Значения по умолчанию нет;
  • $post (тип ‘object’, необязательный): запись для проверки. Значения по умолчанию: текущая запись.

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

Допустим, у вас есть значки для записей блога (например «НОВОЕ», «ЛУЧШЕЕ» или «УСТАРЕВШЕЕ»), которые вы собираетесь использовать с помощью соответствующих тегов, и вы хотите отображать рисунки внутри постов.

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

<?php

if ( has_tag( 'badge-new' ) ) {

    echo '<div class="post-content badge-new">';

} else if ( has_tag( 'badge-featured' ) ) {

    echo '<div class="post-content badge-featured">';

} else if ( has_tag( 'badge-obsolete' ) ) {

    echo '<div class="post-content badge-obsolete">';

} else {

    echo '<div class="post-content">';

}

// Содержимое записи.

echo '</div>';

?>

24. Проверка, установлена ли CMS: is_blog_installed()

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

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

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

25. Проверяем, есть ли у пользователя права супер администратора: is_super_admin()

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

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

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

  • $user_id (тип ‘integer’, необязательный): ID пользователя. (По умолчанию: Текущий пользователь)

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

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

Вот оно:

<?php

// Источник кода: http://www.paulund.co.uk/change-the-wordpress-howdy-text

add_filter( 'admin_bar_menu', 'replace_howdy' );

function replace_howdy( $wp_admin_bar ) {

    $my_account = $wp_admin_bar->get_node( 'my-account' );

    $newtitle = __( 'Здравия желаю, босс!', 'translation-domain' );

    $wp_admin_bar->add_node( array(
        'id' => 'my-account',
        'title'    => $newtitle
    ) );

    return $wp_admin_bar;

}

?>

26. Проверка на то, является ли страница «Страницей»: is_page()

В WordPress «страница» – один из пяти встроенных типов страниц наряду с записями, ревизиями, вложениями и навигационными меню. И если вам нужно определить конкретную страницу, то вы можете использовать условный тег is_page().

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

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

  • $page (тип ‘array/string’, необязательный): ID, заголовок, Slug страницы или массив данных. Значения по умолчанию нет.

В заключение

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

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

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