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

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

40. Проверяем, является ли данный блог «Главным сайтом» в Сети: is_main_site()

Если вы разрабатываете под мультисайтовый WordPress, то может понадобиться определить главный сайт в сети. Условный тег is_main_site поможет в этом: он определяет это по данному ID сайта.

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

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

  • $site_id (тип «integer», необязательный): ID сайта для проверки. Значение по умолчанию: ID текущего сайта.

41. Проверяем, добавлено ли меню в указанную область темы: has_nav_menu()

При создании пользовательского навигационного меню, вы можете определить «местонахождение меню» с помощью двух параметров функции register_nav_menu(s). Условный тег has_nav_menu() проверяет, существует ли меню в определенной области текущей темы.

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

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

  • $location (тип «string», необязательный): slug местоположения меню навигации. Значения по умолчанию нет.

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

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

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

<?php

if ( has_nav_menu( 'mytheme-footer-menu' ) ) {

    wp_enqueue_script( 'mytheme-footer-menu-js', 
'path/to/mytheme-footer-menu.js', array( 'jquery' ) );

}

?>

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

Этот условный тег схож с тегом is_plugin_active(). Условный тег is_plugin_active_for_network() определяет, будет ли активен плагин в режиме работы «мультисайт». Это может оказаться полезным, когда необходимо определить, работает ли плагин во всей сети или только на одном сайте.

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

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

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

43. Проверяем, разрешены ли комментарии: comments_open()

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

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

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

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

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

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

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

<?php

if ( comments_open() ) {

    echo '<div class="comments-warning"><strong>' . __( 'Внимание', 
'translation-domain' ) . ':</strong> ' . __( 
' Все комментаторы несут ответственность за свои слова!', 'translation-domain' ) . 
'</div>';

}

?>

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

Множество тем WordPress используют боковые панели для отображения виджетов. Если вы разрабатываете плагин для темы и хотите найти неиспользуемые сайдбары, то можете сделать это с помощью условного тега is_dynamic_sidebar() — он определяет, активен ли сайдбар и есть ли в нем какие — либо виджеты.

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

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

45. Проверяем, есть ли в блоге более чем один автор: is_multi_author()

Большинство вебсайтов на WordPress ведутся одним автором. Корпоративные сайты обычно не нуждаются в более чем одном авторе, а интернет пестрит «персональными» блогами. Но возможно вам понадобится определить, множество авторов на сайте или один. В таком случае вам поможет условный тег is_multi_author().

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

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

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

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

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

<?php

add_action( 'admin_notices', 'warn_single_authors' );

function warn_single_authors() {

    if ( ! is_multi_author() ) {

        echo '<div class="error">
                  <p>' . __
( 'К сожалению этот плагин работает только в блогах с несколькими авторами!', 'translation-domain' ) . '</p>
              </div>';

    }

}

?>

46. Проверяем, работает ли на сервере с WordPress сервис ping: pings_open()

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

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

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

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

47. Проверяем, отображается ли RSS лента: is_feed()

Я до сих пор считаю RSS ленты хорошим решением, но на сегодняшний день это решение считается уже устаревшим. Хотя WordPress все еще использует его: он поддерживает 4 различных типа RSS лент. Если вы хотите сделать так, чтобы ваша функция определяла, запущена ли она из RSS ленты, то условный тег is_feed() поможет проверить, был сделан запрос для ленты или же нет.

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

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

  • $feeds (тип «string/array», необязательный): Тип ленты. Значения по умолчанию нет.

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

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

Вам понадобится этот шорткод:

<?php

// Использование: [feedonly]Привет, подписчики![/feedonly]
// Источник: http://www.wpbeginner.com/wp-tutorials/how-to-create-feed-only-content-in-wordpress-with-shortcode/

add_shortcode( 'feedonly', 'feedonly_shortcode' );

function feedonly_shortcode( $atts, $content = null ) {

    if ( is_feed() ) {

        return $content;

    }

}

?>

48. Проверяем запись на соответствие типу «Ежегодный архив»: is_year()

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

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

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

49. Проверяем, авторизовался ли пользователь в системе ресурса: is_user_logged_in()

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

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

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

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

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

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

<?php

if ( is_user_logged_in() ) {

    $current_user = wp_get_current_user();

    echo __( 'Рады видеть вас', 'translation-domain' ) . ', ' . 
$current_user->display_name . '!';

} else {

    _e( 'Добро пожаловать на сайт!', 'translation-domain' );

}

?>

50. Проверяем, является ли вложение изображением: wp_attachment_is_image()

Это очень простой условный тег: Вы передаете в параметр ID записи, а тег возвращает значение TRUE в случае, если вложение записи является JPG, JPEG, GIF или PNG – файлом (а иначе возвращает FALSE).

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

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

  • $post_id (тип «integer», обязателен): ID записи. Значение по умолчанию: 0.

51. Проверка на существование указанного типа записи: post_type_exists()

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

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

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

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

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

Допустим, что при разработке плагина «портфолио» вы решили, что записи, созданные плагином, будут иметь тип «portfolio«.

Поэтому вам нужно предупредить пользователей о том, что такой тип записей уже используется:

<?php

add_action( 'admin_notices', 'same_post_type_warning' );

function same_post_type_warning() {

    if ( post_type_exists( 'portfolio' ) ) {

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

    }

}

?>

52. Проверяем, публикуется ли текущая запись на новый день (на завтра): is_new_day()

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

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

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

Заключение

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

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

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