Модификация темы WordPress: сайдбар и виджеты
Одним из важных вопросов при модификации темы WordPress, безусловно, является модификация сайдбара. Сайдбар – это боковая панель блога, или просто «боковушка».
Здесь обычно размещается значительная часть сопутствующей информации, как то: ссылки на другие ресурсы, списки последних постов, архивов, категорий, тэгов. Здесь же могут размещаться сведения о блоггере, реклама, в том числе, блоки кодов Google Adsense.
Вообще говоря, подобная информация может размещаться также и в футере, и даже в хедере блога. Да и сайдбар может быть не один, их может быть два, а то и три.
Поскольку информация в сайдбаре представлена довольно разнородная, важным вопросом при выборе темы является возможность модификации сайдбара в соответствии с нуждами конкретного блоггера. И эта модификация по возможности должна производиться легко, то есть без необходимости написания блоков кода на PHP.
Именно эту задачу и призваны решать виджеты. Что это такое? Виджеты -это некоторые индивидуальные функциональные элементы, небольшие блоки кода, элементарные «кирпичики», которые могут легко (на уровне админ интерфейса) встраиваться в сайдбар (футер, хедер) блога для отображения определенной информации и выполнения некоторых функций.
Например, есть виджеты, отображающие последние посты. Или виджеты, выводящие внешние ссылки на ресурсы.
Есть базовые виджеты, которые доступны на блоге сразу после его установки. Есть и специализированные виджеты, которые добавляются к админпанели блога при установке специальных плагинов.
Для того чтобы увидеть список доступных для использования виджетов, необходимо в меню админпанели блога выбрать «Дизайн – Виджеты».

При этом с левой стороны страницы Вы увидите список всех используемых в данной теме виджетов. На правой стороне можно включать и исключать те или иные виджеты в том или ином сайдбаре.

Интерфейс тут довольно простой и интуитивно понятный. И Вам не составит труда скомпоновать свой сайдбар оптимальным для Вас образом.

Но это в том случае, когда тема (и версия движка) в принципе допускает использование виджетов. К сожалению, многие темы WordPress все еще не виджетизированы, и потому такой механизм не работает.
Что же отличает тему, использующую виджеты, от невиджетизированной темы? Прежде всего, следует сказать, что возможность использования виджетов заложена на уровне движка блога. То есть в принципе любая тема WordPress допускает (или не допускает) использование виджетов.
Все зависит от версии движка. В старых версиях виджеты не использовались. В более новых такая возможность, как правило, присутствует.
И если некоторая тема не настроена на использование виджетов, то такая возможность может быть к ней добавлена. Правда, для этого потребуется некоторая модификация PHP кода. К счастью, не слишком значительная.
Возможность использования виджетов в теме определяется в файле functions.php. Если там присутствуют строчки кода
if ( function_exists(‘register_sidebars’) )
register_sidebars();
то тема виджетизирована. На самом деле данный файл может содержать в себе только этот код, и ничего больше.
Таким образом, если этих строчек в файле нет, а мы хотим виджетизировать тему, то необходимо эти строчки добавить. Теперь наша тема может использовать виджеты. Но это еще не все.
Далее обратимся к файлу sidebar.php. Обычно он построен на основе использования списков, поэтому, скорее всего, мы увидим там конструкцию типа
<ul>
… код …
</ul>
Мы хотим, чтобы, если версия движка допускает использование виджетов, в сайдбаре выводились те виджеты, которые мы укажем в админ панели. А если нет, то в сайдбаре должны выводиться те элементы, которые там уже закодированы.
Для этого добавляем две строчки кода:
<ul>
<?php if ( !function_exists(‘dynamic_sidebar’)
|| !dynamic_sidebar() ) : ?>
… код …
<?php endif; ?>
</ul>
Все. Теперь наша тема может использовать виджеты в сайдбаре.
Если в нашей теме два сайдбара, и мы хотим в каждом из них использовать виджеты, то потребуются небольшие изменения. А именно, в строчке кода файла functions.php надо указать количество добавляемых сайдбаров:
if ( function_exists(‘register_sidebars’) )
register_sidebars(2);
Теперь, для первого сайдбара пишем
… dynamic_sidebar(1)…
а для второго –
… dynamic_sidebar(2)…
Есть и другие тонкости в использовании данных конструкций, но здесь мы не имеем возможности вдаваться в подробности. В большинстве случаев описанных действий будет достаточно.
Если же тема устроена более сложно, и то, что Вы увидите в результате в браузере, Вам не понравится, то придется или копать глубже, или просто выбрать другую тему. Благо их в Интернете сегодня хватает.
Не пропустите следующий пост! Подпишитесь на RSS!
Стой! Сделай ретвит, пока не забыл!
Тэги: виджеты • модификация • сайдбар • темы Wordpress
Рубрика: Wordpress
Понравился этот пост? Подпишитесь на наш канал RSS и узнайте больше!


Многое стало понятно, но остались и вопросы:
1. В шаблоне моей темы в файле functions.php указанной вами строчки нет, но на локальном сервере добавлять виджеты получается, а вот на удаленном нет. Почему?
2. Куда лучше вставить указанную строку, если кода в файле много?
3. Если довавить виджеты из админки, пропадают виджеты, прописанные в коде. А совместить их нельзя?
@ Лариса Клепачева
1. То есть почему получается добавлять на локальном? Честно говоря, не знаю.
2. В самом начале.
3. Можно. Для этого переместите умалчиваемые виджеты из ветви проверки if … endif в коде PHP темы для сайдбара.