В последнем разделе статьи мы также рассмотрим 5 способов применения условных тегов + фрагменты кода, чтобы научить Ваш WordPress блог действовать более разумно в различных ситуациях!
If (условие)
Например в PHP и не только в нем, в условном операторе (if…else) если условие верно (TRUE), то код будет выполнен, а если оно ложно (FALSE), ничего не произойдет. Простой пример:
< ?php if(10 == 10): echo 'Условие верно!'; endif; if(10 == 15): echo 'Условие не верно! И мы этого не увидим!'; endif; ?>
Можно также использовать elseif, который позволяет добавить еще оператор, который будет выполняться, если первый оператор будет ложью.
< ?php if(10 == 11): echo 'Условие не верно! И мы этого не увидим!'; elseif(10 == 15): echo 'Условие не верно! И мы этого не увидим!'; else: echo 'Так как оба из вышеописанных операторов ложны, покажут это строку!'; endif; ?>
Это конечно, базовые знания об условном операторе (if...else) и наверняка, большинство с ними знакомы, но они просто необходимы для того чтобы перейти к условным тегам WordPress, которые работают подобным образом!
Как же работают условные теги?
Давайте рассмотрим один из условных тегов WordPress comments_open (), суть его заключается в том, что Вы просто запрашиваете, доступно ли комментирование статьи в настоящий момент? Если да — то WordPress вернет TRUE (то есть доступно) иначе FALSE (то есть не доступно). Параметром является ID статьи.
< ?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 (или).
< ?php if( comments_open() AND is_page(5) ): echo 'Вы можете оставить комментарий на этой странице!'; endif; ?>
Комментирование открыто только на странице с id 5.
Когда использовать условные теги?
Условные теги полезная вещь, когда Вы хотите управлять контентом в зависимости от результатов отбора и фильтрации. Авторизовался ли пользователь? С какого браузера он зашел на блог? Находится ли он на главной странице или в статье?
Пример работы условного тега мы можем посмотреть в теме twentyeleven (стандартная тема в WP 3.2+) файл index.php, строка 20.
< ?php if ( have_posts() ) : ?> ... статьи ... < ?php else : ?> ... поисковое поле ... < ?php endif; ?>
С помощью have_posts () проверяется, есть ли опубликованные статьи если да, то они показываются, иначе будет написано «ничего не найдено» и предоставлено поле для поиска.
Ниже приведены еще несколько примеров условных тегов:
if( is_admin() ): # Для администратора endif; if( is_home() AND is_page('1') ): # Контент для пользователя если страница с id 1 является главной endif; if( is_single() OR is_page() ): # Пользователь находится либо в статье либо на странице endif; if( !is_home() AND is_page() ): # Информация для пользователей на странице исключая главную endif;
И наконец:
5 приемов использования условных тегов и фрагменты кода
Проверка пользователя на авторизацию
Этот фрагмент будет удобен для блогов, на которых ведется регистрация пользователей:
< ?php if ( is_user_logged_in() ): echo 'Супер-секретная информация ...'; else: echo 'Чтобы увидеть супер-секретную информацию - авторизуйтесь!'; endif; ?>
Информация о регистрации
Хороший фрагмент, если у Вас есть регистрация пользователей, и Вы хотите, чтобы посетителям узнали об этом:
< ?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 Вашей темы:
add_action('wp_footer', 'ga'); function ga() { if ( !is_user_logged_in() ): // if user is not logged in ?><script type="mce-text/javascript">// < ![CDATA[ // < ![CDATA[ // < ![CDATA[ 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 вашей темы:
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 ():,
< ?php if( current_user_can('editor') ): // верно, если пользователь является редактором echo 'Привет редактор!'; endif; if( !current_user_can('administrator') ): // верно, если пользователь не является администратором echo 'Привет всем, кроме админов!'; endif; ?>
Спасибо за прочтение!