Функция register_sidebars()
в WordPress позволяет удобно и быстро создать несколько панелей виджетов (сайдбаров) одновременно. Это особенно полезно, если ваша тема или проект требует несколько сайдбаров, и вам нужно зарегистрировать их в одном месте, используя общий шаблон. Функция создаёт столько сайдбаров, сколько указано в параметре $number
, автоматически добавляя уникальные идентификаторы и имена для каждой панели.
register_sidebars( int $number = 1, array|string $args = array() )
- $number (int, необязательный): Количество сайдбаров, которые нужно создать. По умолчанию — 1.
- $args (array|string, необязательный): Ассоциативный массив или строка с параметрами для настройки сайдбаров.
Если не указаны параметры name
и id
, они будут созданы автоматически на основе номера текущего сайдбара.
Аргументы функции
1. $number
(int) — количество панелей
Это число определяет, сколько панелей виджетов вы хотите создать. По умолчанию создаётся одна панель. Если указать большее число, будут зарегистрированы несколько сайдбаров, причём каждому из них будет присвоено уникальное имя и идентификатор.
2. $args
(array|string) — параметры для каждой панели
Этот аргумент может быть представлен в виде массива или строки с параметрами для создания сайдбаров. Основные параметры включают:
id
(string): Уникальный идентификатор для каждого сайдбара. Если регистрируется несколько панелей, кid
будет добавляться суффикс в виде номера панели (например, «sidebar-2», «sidebar-3» и т.д.). По умолчанию:"sidebar-"
с номером панели.name
(string): Название для каждой панели, которое будет видно в админ-панели. Если регистрируется несколько панелей, можно использовать шаблон%d
, чтобы WordPress подставил номер панели. По умолчанию:'Sidebar'
для первой панели и'Sidebar %d'
для последующих.before_widget
(string): HTML-код, который будет выводиться перед каждым виджетом в панели. По умолчанию:'<li id="%1$s" class="widget %2$s">'
.after_widget
(string): HTML-код, который будет выводиться после каждого виджета в панели. По умолчанию:'</li>'
.before_title
(string): HTML-код перед заголовком каждого виджета. По умолчанию:'<h2 class="widgettitle">'
.after_title
(string): HTML-код после заголовка каждого виджета. По умолчанию:'</h2>'
.
Пример 1: Регистрация одной панели виджетов
Функция register_sidebars()
с одним сайдбаром работает аналогично функции register_sidebar()
. Если вам нужно зарегистрировать одну панель, вы можете использовать этот пример:
register_sidebars();
Этот код создаст один сайдбар с именем «Sidebar» и идентификатором «sidebar».
Пример 2: Создание двух панелей с заголовками в теге <h1>
Если вы хотите создать две панели и изменить HTML-код для заголовков виджетов, можно использовать следующий код:
register_sidebars( 2, array(
'before_title' => '<h1>',
'after_title' => '</h1>'
));
Этот пример создаёт два сайдбара с заголовками виджетов, заключёнными в теги <h1>
и </h1>
.
Пример 3: Использование строковых параметров
Альтернативный способ передачи параметров — использование строки:
register_sidebars( 2, "before_title=<h1>&after_title=</h1>" );
Этот пример аналогичен предыдущему, но параметры передаются в виде строки.
Пример 4: Регистрация двух панелей с уникальными именами
В этом примере создаются две панели с именами «Foobar 1» и «Foobar 2»:
register_sidebars( 2, array(
'name' => 'Foobar %d'
));
Здесь %d
автоматически заменяется на номер панели, что делает имена уникальными для каждой панели.
Пример 5: Создание трёх панелей с уникальными идентификаторами
Этот пример демонстрирует, как создать три панели с уникальными идентификаторами и CSS-классами для стилизации:
register_sidebars( 3, array(
'id' => 'custom-sidebar',
'class' => 'custom-sidebar-class',
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3>',
'after_title' => '</h3>'
));
Результат: создаются три панели с идентификаторами «custom-sidebar», «custom-sidebar-2», «custom-sidebar-3», каждая с уникальными обёртками для виджетов и заголовков.
Полезные советы
- Используйте функцию
register_sidebars()
, если вам нужно зарегистрировать несколько сайдбаров одновременно. - Если вы создаёте одну панель виджетов, лучше использовать
register_sidebar()
. - Использование шаблона
%d
в имени и идентификаторе панелей упрощает создание уникальных элементов для каждой панели. - Не забывайте стилизовать ваши панели с помощью CSS-классов, добавленных через аргумент
class
.
Заключение
Функция register_sidebars()
значительно упрощает процесс создания нескольких панелей виджетов в WordPress. С её помощью вы можете регистрировать любое количество панелей, настроив их идентификаторы, имена и HTML-обёртки для виджетов. Убедитесь, что используете уникальные идентификаторы и имена для каждого сайдбара, чтобы избежать конфликтов в вашей теме.