Виджеты WordPress

Виджеты WordPress служат для того, чтобы добавить сайту разнообразные функциональные возможности. Процесс управления виджетами осуществляется посредством панели администратора. Среди наиболее часто используемых виджетов можно отметить: текстовый блок, списки рубрик, последние комментарии, обновления 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 class="customwidget">',
        'after_widget' => '</div>',
        'before_title' => '<div class="customtitle"',
        'after_title' => '</div>',
    ));
?>

Блог про WordPress
Комментарии: 1
  1. Роман

    Ааа, спасибо!

    Довольно подробная и грамотная статья.

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

Получать новые комментарии по электронной почте.