Довольно распространенный ступор при разработке темы для WordPress, как пользоваться конструктором условий if else
, как правильно их задать и как их вообще использовать в WordPress. Чтобы миллионы пользователей не сходили с ума в поисках решений, WordPress, так сказать, создал условные теги о использовании которых сегодня пойдет речь.
Стандартная конструкция условия выглядит следующим образом:
<?php if(условие) : echo 'good'; else : echo 'bad'; endif; ?>
С одной стороны все понятно, а с другой стоит вопрос как правильно сформулировать условие, чтобы WordPress понял, то чего мы от него хотим 🙂 поехали:
1. Главная страница
Часто хотим, чтобы определенная информация выводилась только на главной странице. Для решения можно создать в папке Вашей темы файл home.php
или в файл index.php
внести следующее условие:
<?php if(is_home()) { ?> <div> ....Здесь выводим информацию, которую мы хотим видеть на главной странице </div> <?php } ?>
2. Проверяем рубрики
Зададим такое условие: Если мы находимся в рубрике WordPress, то выведем фразу «Вас приветствует, WordPress!», а если нет то фразу «Добро пожаловать, на наш сайт!»
<?php if(is_category('id')) : echo "Вас приветствует, WordPress!"; else : echo "Добро пожаловать, на наш сайт!"; endif; ?> /*Можно и такой схемой*/ <?php if(is_category('id')) { ?> <p>"Вас приветствует, WordPress!"</p> <?php } else { ?> <p>Добро пожаловать, на наш сайт!"</p> <?php } ?>
Здесь и дальше в качестве идентификатора рубрики(метки) или записи(страницы) я буду использовать id — его можно узнать в панели управления сайтом. Если Вы пишете условия для рубрик(меток) то смотрите id на странице рубрик(меток), а если записей(страниц) — то на странице всех записей(страниц)… паника). Как все-таки узнать?, — смотрите иллюстрацию:
Идем далее по условиям связанных с рубриками и зададим следующее: «Если запись находится в рубрике WordPress, то вывести слова — Статья из рубрики WordPress»:
<?php if(in_category('id')) : echo 'Статья из рубрики WordPress'; endif; ?>
И еще такой финт 🙂 допустим нам нужно условие для проверки нескольких рубрик, тогда условия будут иметь вид:
<?php if(is_category(array(1,2,34,48)) or in_category(array(1,2,33,50))) : ?> <p>выведем то, что нам нужно</p> <?php endif; ?>
3. Проверяем метки
Метки — крутой классификатор внутри рубрик. Рассмотри несколько примеров, как их можно проверить.
Задача: Если запись имеет метку "plugin"
, то вывести фразу — WordPress Plugin
Решение:
<?php if(has_tag('plugin')) : echo 'WordPress Plugin'; endif; ?>
Задача: Если находимся на странице метки "plugin"
, то вывести фразу — Коллекция плагинов WordPress.
Решение:
<?php if(is_tag('plugin')) : echo 'WordPress Plugin'; endif; ?>
Примечание: в работе с условиями меток лучше пользоваться ярлыком метки, а не ее идентификатором.
Заключение
Я рассмотрел основные условные теги, если у Вас есть какие-то вопросы задавайте их в комментариях! Удачного использования!
Александр,
Выводим во всех рубриках, кроме: 4,6
выводим в рубриках с id: со 2-ой по 13-ю
Тут конечно костыль.. рабочий)
Напомню что
is_category()
можно использовать практически в любом template темы, аin_category()
только на шаблоне постаАнастасия, спасибо поправил
Благодарю за статью. А как сделать, чтобы проверка шла так:
Выводим во всех рубриках, кроме: 4,6
И еще так: выводим в рубриках с id: со 2-ой по 13-ю
Олег, попробуйте Yoast Seo в нем есть способы мигрирования с All in One Seo Pack + можно для статей, категорий, меток, таксономий указать произвольный title и описания
Добрый день, пропустили } в =
Доброго времени! Подскажи пожалуйста, мне нужно поменять титл рубрики на свой текст. у меня стоит all in one seo. я пробовал в хедер вставлять код
но эффекта никакого. мне нужно всего лишь титл 1 рубрики заменить, то что остальные будут генериться из названия меня устраивает. Хелп!
Анна, Вы используете WP или просто сверстать? если WP то Вам нужен шорткод для статьи с опросом, для этого лучше использовать произвольные поля (например ACF) и ajax обработчик формы (написать функцию в файле functions.php которая будет сравнивать правильный ответ и выбор[или ввод] пользователя), а проверить на заполненость или выбор нужно конечно на стороне пользователя ну и на back’е тоже
Здравствуйте! у меня такая задача: есть много записей, в которых сначала выводится текст либо картинка, а ниже задается один-несколько вопросов. Пользователь вводит ответ в инпут. Для каждой записи разные правильные ответы. Как лучше сделать проверку ответов на каждой странице? На другом движке после inputa была конструкция if-else javascript.
Помогите, пожалуйста!
Добрый день, а как задать условие для страницы, которая выводит произвольные типы записей? Перерыл весь интернет, но ничего пока не нашёл. Может, Владимир, вы подскажете?
Спасибо ! Одна из лучших статей ,что я встречал. Очень доходчиво. Жаль ,что больше нет таких статей. Если возможно статью бы как делать add_filters
JAH, я еще специально проверил эту конструкцию на WPшном сайта, думаю, может нововведения какие))
PS Жаль нет возможности прямого ответа на коммент, а дизайн интересный, адаптация хорошо сделана (:
Андрей, )) видать перестарался, если б не написал так бы и висело и никто бы внимания не обращал а так поправил, спасибо)
День добрый! У вас стоит такая конструкция:
Где это видано, чтобы после echo ставили двоеточие?.. Перестарались?)
Кгіщт, вот так:
можно несколько условий
и тд.
Добрый день, а как прописать условие чтобы на домащней странице выводилось «текст 1» а на всех остальных «текст2» если прописываю
текст1
то получается, что домашней выводится и текст1 и текст2 тот который в основном шаблоне
пробовал так
текст 1
текст2
не сработало
Спасибо!
Евгений,
in_category()
— это для шаблона записи (single.php — тоесть принадлежит или не принадлежит запись заданным рубрикам)is_category()
— для шаблона рубрик(category.php — тоесть определяем какая рубрика сечас отображается)и вот так !in_category(‘3,8’) — неправильно писать
нужно так
если не то.. то подробней напишите суть условия, какие шаблоны темы
Что то код отформатировался, дублирую
Использую такой код
а вот так не работает
Использую такой код
что бы скрыть блок на определённых страницах,
хочу добавить условие: если урл http://money-tor.com/home/category/news/, то тоже display:none
но почему то не работает,
Наверное что то не правильно?
Спасибо. Очень помогло. На одном автомобильном сайте нужно было вывести сообщения везде где была метка «карбюраторный» и has_tag сработал. Лучшее что есть на первой странице гугла по этой теме.
Алекесандр, это можно сделать с помощью jQuery а не PHP
Здравствуйте! Подскажите как мне проверить условие при наступлении события после чего вывести сообщение о наступлении события и скрыть часть данных в посте?