Статьи

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

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

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

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

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

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

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

1
2
3
4
5
6
7
8
9
<?php
 
if ( is_home() ) {
     
    _e( ‘Welcome to my great blog!’, ‘translation-domain’ );
     
}
 
?>

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

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

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

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

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

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
 
// Standard Loop stuff.
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();
                </h2>
                 
                <div class=»post-content»>
                    <?php the_content();
                </div>
         
            </div><!— .post —>
 
    <?php }
         
} else {
     
    echo ‘<p>’ .
     
}
 
?>

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

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

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

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

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

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

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

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

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

Создание виджетов в WordPress легко и увлекательно, но нам может потребоваться определить, используется ли виджет в интерфейсе или нет. Условный тег is_active_widget() делает именно это: он проверяет, отображается ли виджет.

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

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

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

01
02
03
04
05
06
07
08
09
10
11
<?php
 
// source: http://codex.wordpress.org/Function_Reference/is_active_widget
 
if ( is_active_widget( false, false, $this->id_base, true ) ) {
 
    wp_enqueue_script( ‘jquery’ );
 
}
 
?>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Допустим, вы создаете тему и хотите отображать ленту «КЛЕЙКА» в прикрепленных сообщениях. Вот что вы делаете:

1
2
3
4
5
6
7
8
9
<?php
 
if ( is_sticky() ) {
 
    echo ‘<div class=»sticky-ribbon»></div>’;
     
}
 
?>

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

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

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

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

  • $category (строка / массив, необязательно): ID категории, заголовок, слаг или их массив. (По умолчанию: нет)

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<?php
 
if ( is_category() ) {
     
    // Load sidebar-news.php.
    get_sidebar( ‘news’ );
     
} else {
 
    // Load sidebar.php.
    get_sidebar();
 
}
 
?>

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

Увидимся в следующей части!