Как показывает практика моих консультаций по Skype (см. “Услуги”), очень многих интересует вопрос о том, как реализовать в WordPress возможность отображения того или иного блока на одной странице и сокрытия его на другой. Поскольку знакомство мое с сайтостроением началось с CMS Joomla, в которой показ того или иного мода или меню можно расписать чуть ли не до каждой страницы, то мне, естественно, этой функции в WordPress тоже очень не хватало.

Однако, кое что, мы все-таки сделать в этом направлении сможем. Как известно, все страницы делятся в WordPress на типы, которые отображаются на языке php определенным образом. Ну а если типы определены, значит и поиграть с отображением блоков на разных типах страниц мы тоже можем. Итак, не будем углубляться в теорию, а перейдем сразу к практике.

Для демонстрации примеров функций примем за контент фразу: “Это наш контент” и сразу же перейдем к делу.

Чтобы отобразить блок только на главной странице, надо заключить его в следующую конструкцию:

<?php if(is_home()) { ?>
Это наш контент
<?php } ?>

Если надо показать содержимое контента только на странице поста, то конструкция будет следующая:

<?php if(is_single()) { ?>
Это наш контент
<?php } ?>

По элементам конструкции видно, что изменяется только единственная функция, которая указывает на тот или иной тип страниц. Поэтому просто перечислим здесь известные нам типы:

is_home () – главная страница

is_single () – страница одиночного поста

is_page () – страница со статическим содержимым

is_archive () – страница архива

is_search () – страница отображения результатов поиска

is_category () – страница отображения содержимого категорий

is_paged () -  пагинированная страница

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

<?php if(is_home()||is_single()||is_search()) { ?>
Это наш контент
<?php } ?>

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

<?php if(!is_home()) { ?>
Это наш контент
<?php } ?>

С главной страницей есть небольшая сложность. Дело в том, что функция is_home () относится не только к собственно главной странице, но и к ее сестрам, которые находятся в одном шаге от нее по ссылкам постраничной навигации. То есть написав is_home () мы дадим команду отображать контент не только на главной странице, но и на следующей с продолжением перечисления. Здесь обойтись можно очень просто. Чтобы отображать блок действительно только на одной главной странице, которая отображается при вызове вашего блога набором его основного адреса, надо написать следующее (здесь && – оператор И):

<?php if ( (is_home())&&!(is_paged()) ) { ?>
Это наш контент
<?php } ?>

Меток нет

Связанные записи: