Статьи

Пошаговое руководство по условным тегам в WordPress: от 53 до 65

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

Давайте начнем!

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

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

  • $post_types (массив / строка, необязательно): имя типа публикации или массив имен типов записей. (По умолчанию: нет)

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

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

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<?php
 
function my_awesome_plugin_function() {
 
    if ( ! in_the_loop() ) {
     
        echo ‘<!— ‘ .
     
    } else {
     
        // Run the awesome code because we’re in the loop!
     
    }
 
}
 
?>

Вы можете догадаться, о чем этот условный тег, по его имени: Определяемый как «логическое отрицание is_plugin_active() » в Кодексе, is_plugin_inactive() проверяет, установлен ли данный плагин, но не активирован ли он.

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

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

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

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

  • $author (строка / целое число, необязательно): имя пользователя или идентификатор автора. (По умолчанию: нет)

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<script>
 
/* Some Google Analytics related JavaScript here.
 
<?php
 
if ( is_author() ) {
 
    echo ‘_gaq.push( [ «_setCustomVar», 1, «‘ . __( ‘Author Archives’, ‘translation-domain’ ) . ‘», «‘ . esc_attr( get_query_var( ‘author_name’ ) ) . ‘» ] );’
     
}
 
?>
 
_gaq.push( [ «_trackPageview» ] );
 
</script>

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

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

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

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

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<?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’ );
 
    }
 
}
 
?>

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

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

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

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

  • $sidebar (строка / целое число, обязательно): имя или идентификатор боковой панели. (По умолчанию: нет)

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

01
02
03
04
05
06
07
08
09
10
11
<?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 } ?>

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

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

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

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

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

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

01
02
03
04
05
06
07
08
09
10
11
<?php
 
if ( ! is_preview() ) {
 
    echo ‘<script>
             <!— Your Google Analytics code.
         </script>’;
 
}
 
?>

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

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

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

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

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

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

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<?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’ );
 
    }
 
}
 
?>

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

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

  • $taxonomy (строка обязательна): название таксономии. (По умолчанию: нет)

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

Если у вас есть какие-либо вопросы или комментарии, снимите их ниже — и если вам понравилась эта статья, не забудьте поделиться ею!