ХИТРЫЙ СПОСОБ ДИНАМИЧЕСКОГО ЗАКРЫТИЯ ТЕГОВ В ТЕМЕ

ХИТРЫЙ СПОСОБ ДИНАМИЧЕСКОГО ЗАКРЫТИЯ ТЕГОВ В ТЕМЕ

В данной статье я расскажу о полезном приёме, который может оказаться удобным и незаменимым при создании тем для WordPress. Уверен, что многим пользователям это будет интересно, особенно тем, кто только начинает свой путь в разработке тем.

Зачем это нужно?

Создавая тему для WordPress, вы, возможно, сталкивались с подобной ситуацией, когда структура страниц выглядит примерно так:



Эта структура встречается на различных типах страниц: home.php, page.php, single.php и других. Неважно, какую страницу вы создаёте, она будет иметь похожую структуру.

Проблема

Существует вопрос: почему бы не скрыть теги <div id="content"> в файле header.php и </div><!--#content--> в файле sidebar.php? Зачем дублировать код в каждом файле шаблона? Можно было бы оставить их только в одном месте, и структура выглядела бы проще:

Но если мы уберём эти теги из этого места, то не сможем убрать боковую панель (sidebar), потому что важный закрывающий тег будет находиться внутри get_sidebar(). А может, в будущем нам потребуется этот тег…

Решение

Решение довольно простое и заключается в использовании функции did_action(), о которой мало кто знает и которая редко используется.

  1. Поместите тег <div id="content"> в файл header.php.
  2. Поместите закрывающий тег </div><!--#content--> в файл sidebar.php.
  3. Дублируйте закрывающий тег в файле footer.php, добавив условие, чтобы этот тег отображался только в том случае, если функция get_sidebar() не была вызвана.

В результате код в начале файла footer.php будет выглядеть так:

// если боковая панель не была вызвана, закрывающие теги не нужны - давайте закроем их...
if( ! did_action('get_sidebar') )
    echo '
';

Функция did_action() работает очень быстро, поэтому не стоит переживать по поводу производительности, даже если это может показаться избыточным.

Заключение

Вот и всё! Надеюсь, этот приём окажется для вас полезным. Подписывайтесь, ставьте лайки и не стесняйтесь экспериментировать!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *