Избирательность показа блоков в WordPress

Как показывает практика моих консультаций по 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 } ?>
  1. eavasi

    Забыл написать в посте, что можно для примера взглянуть на большой серый подвал на этом блоге, где календарь и подписка с комментариями. Дак вот этот большой блок выводится на всех, кроме главной, страницах

  2. eavasi Автор записи

    Забыл написать в посте, что можно для примера взглянуть на большой серый подвал на этом блоге, где календарь и подписка с комментариями. Дак вот этот большой блок выводится на всех, кроме главной, страницах

  3. Александр Кривой

    Как вовремя, я как раз разбирал возможность такого рода вставки дополнительных блоков... один такой у меня в шаблоне есть, но еще не нашел где менять, теперь уже видимо точно найду. Сэнкс)))

    1. eavasi

      Очень приятно, Саша, что тебе пригодилось. Я, когда, такую возможность обнаружил, очень был доволен.

  4. Александр Кривой

    Как вовремя, я как раз разбирал возможность такого рода вставки дополнительных блоков... один такой у меня в шаблоне есть, но еще не нашел где менять, теперь уже видимо точно найду. Сэнкс)))

    1. eavasi

      Очень приятно, Саша, что тебе пригодилось. Я, когда, такую возможность обнаружил, очень был доволен.

    1. eavasi

      Поздравляю.

      Мне знакомо это чувство, когда делаешь что-то впервые, и оно получается — всегда так приятно!!!

    1. eavasi Автор записи

      Поздравляю.

      Мне знакомо это чувство, когда делаешь что-то впервые, и оно получается — всегда так приятно!!!

Добавить комментарий

Ваш e-mail не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.