Условные теги WordPress для начинающих

Здравствуйте уважаемые читатели XoZbloga! Условные теги — одна из особенностей WordPress. Благодаря условным тегам, можно действовать по разному в определенных ситуациях. Например, Вы можете проверить, что посетитель блога использует Windows или Mac, а после отображать различное содержимое на основе полученных данных. В этой статье мы рассмотрим условные теги WordPress, как они работают, и когда можно их использовать.
В последнем разделе статьи мы также рассмотрим 5 способов применения условных тегов + фрагменты кода, чтобы научить Ваш WordPress блог действовать более разумно в различных ситуациях!

If (условие)

Например в PHP и не только в нем, в условном операторе (if…else) если условие верно (TRUE), то код будет выполнен, а если оно ложно (FALSE), ничего не произойдет. Простой пример:

1
2
3
4
5
6
7
<?php
if(10 == 10):    
   echo 'Условие верно!';
endif;
if(10 == 15):    
   echo 'Условие не верно! И мы этого не увидим!';
endif; ?>

Можно также использовать elseif, который позволяет добавить еще оператор, который будет выполняться, если первый оператор будет ложью.

1
2
3
4
5
6
7
8
9
<?php
if(10 == 11):
    echo 'Условие не верно! И мы этого не увидим!';
elseif(10 == 15):
    echo 'Условие не верно! И мы этого не увидим!';
else:
    echo 'Так как оба из вышеописанных операторов ложны, покажут это строку!';
endif;
?>

Это конечно, базовые знания об условном операторе (if..else) и наверняка, большинство с ними знакомы, но они просто необходимы для того чтобы перейти к условным тегам WordPress, которые работают подобным образом!

Как же работают условные теги?

Давайте рассмотрим один из условных тегов WordPress comments_open(), суть его заключается в том, что Вы просто запрашиваете, доступно ли комментирование статьи в настоящий момент? Если да — то WordPress вернет TRUE (то есть доступно) иначе FALSE (то есть не доступно). Параметром является ID статьи.

1
2
3
4
5
6
7
<?php
if( comments_open($post_id) ):
    echo 'Вы можете оставить комментарий к этой статье!';
else:
    echo 'Комментирование этой статьи отключено!';
endif;
?>

Для более подробного ознакомления с условными тегами WordPress перейдите на эту страницу.

А вот список из нескольких условных тегов WordPress:

  • comments_open — проверяет, доступно ли комментирование в статье;
  • has_tag — проверяет, есть ли у текущей статьи теги;
  • in_category — проверяет, присутствует ли указанная статья в указанной категории;
  • is_404 — показывается ли страница с ошибкой 404;
  • is_admin — проверяет, что показывается приборная или административная панель;
  • is_archive — проверяет, показывается ли какой-либо тип страницы Архива. Архив — Категории, Тега, Автора или даты публикации статей.
  • is_attachment — проверяет, показывается ли приложения (картинки или др. файлы);
  • is_author — показывается ли страница архива автора;
  • is_category — показывается ли страница архива категории;
  • is_front_page — возвращает TRUE если на главной странице отображаются последние записи и FALSE если главная страница статическая;
  • is_home — находится ли пользователь на главной странице блога;
  • is_multi_author — возвращает TRUE если на блоге статьи написаны более чем одним автором;
  • is_page — проверяет, нумеруются ли страницы;
  • is_page_template — находитесь ли Вы в каком-либо шаблоне страницы;
  • is_paged — проверяет, нумеруется ли выводимая на экран страница;
  • is_preview — проверяет, в черновом ли режиме показывается статья;
  • is_search — проверяет, находится ли пользователь на странице результата поиска;
  • is_single — проверяет, находится ли пользователь на странице записи;
  • is_super_admin — является ли пользователь супер-админом, параметром является id пользователя;
  • is_tag — проверяет, показывается ли страница архива тегов;

Комбинация условных тегов

Бывают случаи, когда необходимо совместить несколько условных тегов. Это легко сделано используя операторы AND (и) и OR (или).

1
2
3
4
5
<?php
if( comments_open() AND is_page(5) ):
    echo 'Вы можете оставить комментарий на этой странице!';
endif;  
?>

Комментирование открыто только на странице с id 5.

Когда использовать условные теги?

Условные теги полезная вещь, когда Вы хотите управлять контентом в зависимости от результатов отбора и фильтрации. Авторизовался ли пользователь? С какого браузера он зашел на блог? Находится ли он на главной странице или в статье?
Пример работы условного тега мы можем посмотреть в теме twentyeleven (стандартная тема в WP 3.2+) файл index.php, строка 20.

1
2
3
4
5
<?php if ( have_posts() ) : ?>
... статьи ...
<?php else : ?>
... поисковое поле ...
<?php endif; ?>

С помощью have_posts() проверяется, есть ли опубликованные статьи если да, то они показываются, иначе будет написано «ничего не найдено» и предоставлено поле для поиска.

Ниже приведены еще несколько примеров условных тегов:

1
2
3
if( is_admin() ):
    # Для администратора
endif;
1
2
3
if( is_home() AND is_page('1') ):
    # Контент для пользователя если страница с id 1 является главной
endif;
1
2
3
if( is_single() OR is_page() ):
    # Пользователь находится либо в статье либо на странице
endif;
1
2
3
if( !is_home() AND is_page() ):
    # Информация для пользователей на странице исключая главную
endif;

А теперь как и обещал:

5 приемов использования условных тегов и фрагменты кода

Проверка пользователя на авторизацию

Этот фрагмент будет удобен для блогов, на которых ведется регистрация пользователей:

1
2
3
4
5
<?php if ( is_user_logged_in() ):
    echo 'Супер-секретная информация ...';
else:
    echo 'Чтобы увидеть супер-секретную информацию - авторизуйтесь!';
endif; ?>

Информация о регистрации

Хороший фрагмент, если у Вас есть регистрация пользователей, и Вы хотите, чтобы посетителям узнали об этом:

1
2
3
4
5
<?php if ( get_option('users_can_register')):
     echo 'Регистрация доступна!';
else:
    echo 'Регистрация не доступна!';
endif; ?>

Отключить Google Analytics для зарегистрированных пользователей

Если вы используете Google Analytics, и вы хотите, отслеживать только посетителей, кроме ваших авторов и писателей, можно использовать этот фрагмент для достижения цели. Не забудьте изменить UA-XXXXXXX-X на Ваш ID в Google Analytics, код Google Analytics автоматически установится в footer. Необходимо вставить данный фрагмент в function.php Вашей темы:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
add_action('wp_footer', 'ga');
function ga() {
   if ( !is_user_logged_in() ): // íf user is not logged in
?>
   <script type="text/javascript">
     var _gaq = _gaq || [];
     _gaq.push(['_setAccount', 'UA-XXXXXXX-X']); // insert your Google Analytics id here
     _gaq.push(['_trackPageview']);
     _gaq.push(['_trackPageLoadTime']);
     (function() {
       var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
       ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
       var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
     })();
   </script>
<?php
   endif;
}

Редирект в результат поиска

Если после поиска на блоге результат один, то есть совпадение только одно, то можно сделать редирект (переход) в эту статью сразу, без просмотра результатов. Вставьте этот фрагмент кода в файл function.php вашей темы:

1
2
3
4
5
6
7
8
9
add_action('template_redirect', 'single_result');
function single_result() {
    if (is_search()) {
        global $wp_query;
        if ($wp_query->post_count == 1) {
            wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
        }
    }
}

Проверка роли пользователя

Чтобы показать для каждой роли свой определенный контент воспользуемся функцией current_user_can():,

1
2
3
4
5
6
7
8
9
10
<?php
if( current_user_can('editor') ):
    // верно, если пользователь является редактором
    echo 'Привет редактор!';
endif;
if( !current_user_can('administrator') ):
    // верно, если пользователь не является администратором
    echo 'Привет всем, кроме админов!';
endif;
?>

Чтобы оставаться в курсе свежих статей и уроков подписывайтесь на страницу ВКонтакте или подпишитесь на почтовую рассылку. Не забывайте оставлять комментарии к статьям и урокам. Если статья Вам понравилась и пригодилась сделайте tweet или like — тем самым Вы выразите свою благодарность. Спасибо за прочтение. До связи!

Чтобы оставаться в курсе свежих статей и уроков подписывайтесь на еженедельную почтовую рассылку или на новостную ленту RSS. Спасибо!