Функция register_sidebar()
в WordPress используется для регистрации виджетной области (сайдбара), что позволяет разработчикам добавлять виджеты на страницы сайта через админ-панель. Эта функция создает контейнер для виджетов и определяет их внешний вид с помощью HTML-разметки. После регистрации, эти области отображаются на страницах сайта через вызов функции dynamic_sidebar()
.
register_sidebar( array|string $args = array() ): string
Параметры:
$args
(массив или строка, опционально): Аргументы для регистрации виджетной области. Если аргументы не указаны, WordPress автоматически сгенерирует идентификатор и название области на основе текущего количества зарегистрированных сайдбаров.
Возвращает:
- Строку — идентификатор (ID) зарегистрированного сайдбара.
Аргументы параметра $args
Параметры, которые вы можете передать в массиве $args
, определяют, как будет выводиться панель виджетов. Эти аргументы позволяют вам кастомизировать название, идентификатор, описание, классы и HTML обёртки для виджетов и их заголовков.
1. name
(строка)
- Описание: Название панели виджетов, отображаемое в админ-панели WordPress. Это имя помогает администратору идентифицировать панель в интерфейсе управления виджетами.
- По умолчанию: Если значение не указано, WordPress сгенерирует его автоматически, используя формат:
"Sidebar $i"
, где$i
— это порядковый номер боковой панели. - Пример:
'name' => 'Боковая панель для главной страницы'
2. id
(строка)
- Описание: Уникальный идентификатор панели виджетов, используемый для вызова панели в шаблонах. Он должен быть уникальным и состоять только из строчных букв и символов без пробелов.
- По умолчанию: Если не указано, WordPress автоматически присвоит идентификатор, используя формат
"sidebar-$i"
. - Важное замечание: Если идентификатор не задан, это может вызвать уведомления об ошибках в режиме разработки.
- Пример:
'id' => 'homepage-sidebar'
3. description
(строка)
- Описание: Текст, который поясняет, где будет отображаться панель виджетов. Этот текст виден только в админ-панели и помогает понять, где именно будет использоваться данная панель.
- По умолчанию: Пустая строка.
- Пример:
'description' => 'Панель для отображения виджетов на главной странице сайта.'
4. class
(строка)
- Описание: Дополнительный CSS класс, который будет добавлен к контейнеру панели виджетов. Используется для стилизации панели через CSS.
- По умолчанию: Пустая строка, если не указано.
- Пример:
'class' => 'custom-sidebar-class'
5. before_widget
(строка)
- Описание: HTML-код, который будет выводиться перед каждым виджетом в панели.
%1$s
будет заменен наid
виджета, а%2$s
— на его CSS-класс. - По умолчанию:
'<li id="%1$s" class="widget %2$s">'
- Пример:
'before_widget' => '<div class="widget-block">'
6. after_widget
(строка)
- Описание: HTML-код, который будет выводиться после каждого виджета в панели. Этот код завершает HTML-обертку каждого виджета.
- По умолчанию:
"</li>\n"
- Пример:
'after_widget' => '</div>'
7. before_title
(строка)
- Описание: HTML-код, который будет выводиться перед заголовком виджета. Обычно это HTML-элемент, например, тег заголовка (
<h2>
). - По умолчанию:
'<h2 class="widgettitle">'
- Пример:
'before_title' => '<h3 class="widget-header">'
8. after_title
(строка)
- Описание: HTML-код, который будет выводиться после заголовка виджета, завершающий элемент заголовка.
- По умолчанию:
"</h2>\n"
- Пример:
'after_title' => '</h3>'
9. before_sidebar
(строка, добавлено в WP 5.6)
- Описание: HTML-код, который выводится перед всей панелью виджетов.
%1$s
и%2$s
заменяются наid
иclass
панели соответственно. - По умолчанию: Пустая строка.
- Пример:
'before_sidebar' => '<div class="custom-sidebar-wrapper">'
10. after_sidebar
(строка, добавлено в WP 5.6)
- Описание: HTML-код, который выводится после всей панели виджетов.
- По умолчанию: Пустая строка.
- Пример:
'after_sidebar' => '</div>'
11. show_in_rest
(логический, добавлено в WP 5.9)
- Описание: Определяет, нужно ли отображать эту панель виджетов публично в REST API. Это полезно для разработки с использованием блоков или внешних API-запросов.
- По умолчанию:
false
, что означает, что панель виджетов будет доступна только администраторам. - Пример:
'show_in_rest' => true
Пример 1: Регистрация сайдбара для главной страницы
function register_my_custom_sidebar() {
register_sidebar( array(
'name' => 'Главная боковая панель',
'id' => 'main-sidebar',
'description' => 'Эта панель отображает виджеты на главной странице',
'class' => 'main-sidebar-class',
'before_widget' => '<div class="custom-widget-block">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
'before_sidebar' => '<section class="custom-sidebar">',
'after_sidebar' => '</section>',
'show_in_rest' => true
));
}
add_action( 'widgets_init', 'register_my_custom_sidebar' );
Вставьте вызов dynamic_sidebar()
в шаблон для вывода:
<?php if ( is_active_sidebar( 'main-sidebar' ) ) : ?>
<div class="main-sidebar">
<?php dynamic_sidebar( 'main-sidebar' ); ?>
</div>
<?php endif; ?>
Пример 3: Регистрация нескольких панелей виджетов
Если требуется зарегистрировать несколько похожих виджетных областей, можно использовать цикл:
function register_multiple_sidebars() {
for ( $i = 1; $i <= 3; $i++ ) {
register_sidebar( array(
'name' => "Панель №$i",
'id' => "custom-sidebar-$i",
'description' => "Панель для виджетов №$i.",
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h4 class="widget-title">',
'after_title' => '</h4>',
) );
}
}
add_action( 'widgets_init', 'register_multiple_sidebars' );
Этот код зарегистрирует три виджетные области с идентификаторами custom-sidebar-1
, custom-sidebar-2
и custom-sidebar-3
. Каждая область будет иметь собственную разметку и описание.
Заключение
Использование функции register_sidebar()
позволяет разработчикам легко настраивать и выводить виджеты на страницах WordPress. Убедитесь, что каждый зарегистрированный сайдбар имеет уникальный идентификатор и правильно настроенную HTML-структуру для корректного отображения виджетов на сайте.