ХИТРЫЙ СПОСОБ ДИНАМИЧЕСКОГО ЗАКРЫТИЯ ТЕГОВ В ТЕМЕ
В данной статье я расскажу о полезном приёме, который может оказаться удобным и незаменимым при создании тем для WordPress. Уверен, что многим пользователям это будет интересно, особенно тем, кто только начинает свой путь в разработке тем.
Зачем это нужно?
Создавая тему для WordPress, вы, возможно, сталкивались с подобной ситуацией, когда структура страниц выглядит примерно так:
Эта структура встречается на различных типах страниц: home.php, page.php, single.php и других. Неважно, какую страницу вы создаёте, она будет иметь похожую структуру.
Проблема
Существует вопрос: почему бы не скрыть теги <div id="content">
в файле header.php и </div><!--#content-->
в файле sidebar.php? Зачем дублировать код в каждом файле шаблона? Можно было бы оставить их только в одном месте, и структура выглядела бы проще:
Но если мы уберём эти теги из этого места, то не сможем убрать боковую панель (sidebar), потому что важный закрывающий тег будет находиться внутри get_sidebar()
. А может, в будущем нам потребуется этот тег…
Решение
Решение довольно простое и заключается в использовании функции did_action()
, о которой мало кто знает и которая редко используется.
- Поместите тег
<div id="content">
в файлheader.php
. - Поместите закрывающий тег
</div><!--#content-->
в файлsidebar.php
. - Дублируйте закрывающий тег в файле
footer.php
, добавив условие, чтобы этот тег отображался только в том случае, если функцияget_sidebar()
не была вызвана.
В результате код в начале файла footer.php
будет выглядеть так:
// если боковая панель не была вызвана, закрывающие теги не нужны - давайте закроем их...
if( ! did_action('get_sidebar') )
echo '