Виджеты служат для того, чтобы добавить сайту разнообразные функциональные возможности. Процесс управления виджетами осуществляется посредством панели администратора. Среди наиболее часто используемых виджетов можно отметить: текстовый блок, списки рубрик, последние комментарии, обновления RSS и т.д. Все это составляет основу функциональности WordPress.
Грамотное применение виджетов раскрывает перед администратором безграничный горизонт новых возможностей. Виджеты идеально подходят для выполнения любых актуальных задач, позволяют взглянуть на процесс создания сайта с иной стороны. Чаще всего, конечно, виджеты применяются в зоне сайдбара, однако это совсем не значит, что другие области сайта для них закрыты. Достаточно вспомнить, к примеру, тему Notes Blog Core, в которой существует область под названием Submenu – в ней также можно размещать виджеты.
Объявление виджетов
Области для размещения виджетов определяются в файле functions.php. Для того чтобы виджеты могли в них применяться, нужно добавить код, отвечающий за отображение областей. Приведенный ниже пример демонстрирует создание виджета для сайдбара.
<?php
if ( function_exists('register_sidebar') )
register_sidebar();
?>
Затем разместим следующий код в файле sidebar.php в том месте, где нам требуется вывести виджет:
<ul id="sidebar">
<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar() ) : ?>
<li id="about">
<h2>About this site</h2>
<p>Welcome to this most excellent site!</p>
</li>
<li id="search">
<h2>Search</h2>
<?php get_search_form(); ?>
</li>
<?php endif; ?>
</ul>
Зона виджетов начинается со строк:
<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar() ) : ?>
и заканчивается:
<?php endif; ?>
Все, что расположено между этими двумя инструкциями, будет отображено лишь в том случае, когда не задано ни одного виджета. Насколько вы смогли увидеть из предыдущего примера, в зоне виджетов можно размещать как обычные HTML элементы, так и тэги шаблона.
Множественные области виджетов
Некоторые темы обладают сразу несколькими областями для виджетов. Их объявление в файле functions.php несколько отличается от объявления одиночных зон виджетов. Если вы хотите объявить две области сайдбара, область заголовка и область подвала, то сделать это можно следующим образом:
if ( function_exists('register_sidebar') )
register_sidebar(array('name'=>'Sidebar 1'));
register_sidebar(array('name'=>'Sidebar 2'));
register_sidebar(array('name'=>'Header'));
register_sidebar(array('name'=>'Footer'));
));
Все отличие от одиночных зон заключается в том, что каждая из них имеет свое название. Соответственно, при отображении областей понадобится использовать их имена:
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('The-Widget-Area-Name') ) :
?><?php endif; ?>
Отображение подвала будет выглядеть следующим образом:
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Footer') ) : ?><?php endif; ?>
Настройка виджетов
Не всех пользователей устраивает то, как работают виджеты в WordPress. Может быть, вы хотите, чтобы они были заключены в блоки div? Не вопрос – проблема решается путем использования файла functions.php:
<?php
if ( function_exists('register_sidebar') )
register_sidebar(array(
'before_widget' => '',
'after_widget' => '',
'before_title' => '',
'after_title' => '',
));
?>
В конце строк можно видеть пустые одинарные кавычки. В них обычно заключается обертывающий код, отвечающий за какие-либо действия. Сделаем следующее: обернем виджет элементом div с классом customwidget, и добавим к нему заголовок title с классом customtitle:
<?php
if ( function_exists('register_sidebar') )
register_sidebar(array(
'before_widget' => '<div>',
'after_widget' => '</div>',
'before_title' => '<div',
'after_title' => '</div>',
));
?>