Здравствуйте уважаемые читатели 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 — тем самым Вы выразите свою благодарность. Спасибо за прочтение. До связи!
Источник статьи/урока: https://xozblog.ru
По материалам: http://www.hongkiat.com/blog/wordpress-conditional-tags-beginners/