register_sidebar()
Регистрирует панель виджетов (место, куда размещаются виджеты в админ-панели, чтобы потом вывести их в лицевой части).
Функция регистрирует панель (место, контейнер) для виждетов и формат вывода для каждого виджета:
- html тег заголовка.
- html тег до и после виджета.
Зарегистрировав панель, в админ-панели появится место, куда можно помещать виджеты. Разместив виджеты в панели, мы сможем вывести панель с виджетами в шаблоне с помощью функции dynamic_sidebar(), (см. пример 2).
Функцию нужно подключать к событию widgets_init.
Эта функция автоматически активирует поддержку виджетов. Смотрите add_theme_support('widgets')
Не используйте названия идентификаторов для параметра ID из этого списка. Там же, по ссылке, вы найдете небольшую функцию, которая собирает уже используемые ID в WordPress.
Используйте register_sidebars(), чтобы создать несколько панелей за раз.
Дефолтные значения параметров before/after рассчитаны на темы, которые создают боковые панели в виде LI списка с заголовками в H2 теге. Такая регистрация рекомендуется разработчиками WordPress для всех тем.
Если по каким-то причинам, маркировку нужно изменить, рекомендуется скопировать id (id="%1$s") и class (class="widget %2$s") атрибуты как указано по умолчанию и не указывать их жестко. Нужно это, чтобы они создавались динамически с помощью функции sprintf().
Нельзя оставлять параметры name и id пустыми!
Их можно либо не указывать вообще, либо обязательно указать при этом, нужно чтобы они были уникальными.
Если не определить id или name, то для них будут использованы значения по умолчанию с инкрементом:
'name' => sprintf(__('Sidebar %d'), $i ),
'id' => "sidebar-$i",
Где $i будет числом равным кол-ву панелей на сайте + 1.
Хуки из функции
Возвращает
Строку. Идентификатор переданный в параметре ID.
Шаблон использования
add_action( 'widgets_init', 'register_my_widgets' );
function register_my_widgets(){
register_sidebar( array(
'name' => sprintf(__('Sidebar %d'), $i ),
'id' => "sidebar-$i",
'description' => '',
'class' => '',
'before_widget' => '<li id="%1$s" class="widget %2$s">',
'after_widget' => "</li>\n",
'before_title' => '<h2 class="widgettitle">',
'after_title' => "</h2>\n",
'before_sidebar' => '', // WP 5.6
'after_sidebar' => '', // WP 5.6
) );
}
Использование
register_sidebar( $args );
- $args(строка/массив)
Аргументы для регистрации панели виджетов. Можно указывать в виде строки или массива:
Если в виде строки, тогда аргументы нужно разделять знаком &:'name=Sidebar&id=my_prefix_sidebar'
Те же аргументы в массиве:
array( 'name' => 'Sidebar', 'id' => 'my_prefix_sidebar', )
По умолчанию: [] (предустановки)
Аргументы параметра $args
Большинство из опций ниже указывают подходящие для темы теги оборачивающие каждый виджет и его заголовок.
- name(строка)
Название панели виджетов. Название будет видно в админ-панели WordPress. По умолчанию "Боковая колонка 1" (локализация от
Sidebar $i, где $i порядковый номер сайдбара). Значение не должно быть пустым!Несмотря на то, что название будет видно только в админ-панели, важно дать пользователю представление о том, где будет выводиться панель.
По умолчанию: sprintf( __('Sidebar %d'), $i )
- id(строка)
- Идентификатор виджета. Строка, в которой не должно быть заглавных букв и пробелов. Значение не должно быть пустым, если оставить этот параметр пустым, то в режиме разработки (при дебаге) получите заметку типа E_USER_NOTICE.
По умолчанию: "sidebar-$i" - description(строка)
- Текст описывающий где будет выводиться панель виджетов. Показывается в панели управления виджетами.
По умолчанию: '' - class(строка)
- CSS класс, который будет добавлен главному HTML тегу панели виджетов.
По умолчанию: '' - before_widget(строка)
- HTML код, который будет расположен перед каждым виджетом в панели. Например:
<li class="my-widget">. Конструкции%1$sи%2$sбудут заменены на id и class используемого в сайдбаре виджета.
По умолчанию: '<li id="%1$s" class="widget %2$s">' - after_widget(строка)
- HTML код, который будет расположен после каждого виджета в панели. Например:
</li>.
По умолчанию: "</li>\n" - before_title(строка)
- HTML код перед заголовком виджета.
По умолчанию: '<h2 class="widgettitle">' - after_title(строка)
- HTML код после заголовка виджета.
По умолчанию: "</h2>\n" - before_sidebar(строка) (WP 5.6)
- HTML перед сайдбаром. Получает аргумент $id в
%1$sи $class в%2$s. Выводится после хука dynamic_sidebar_before.
По умолчанию: '' - after_sidebar(строка) (WP 5.6)
- HTML после сайдбара. Выводится перед хуком dynamic_sidebar_after.
По умолчанию: '' - $show_in_rest(true/false) (WP 5.9)
- Нужно ли показывать этот сайдбар публично в REST API.
По умолчанию: false (показывать только администраторам).
Примеры
#1 Зарегистрируем панель виджетов для главной страницы сайта
Добавим код в functions.php:
function register_my_widgets(){
register_sidebar( array(
'name' => 'Боковая панель на главной странице',
'id' => 'homepage-sidebar',
'description' => 'Выводиться как боковая панель только на главной странице сайта.',
'before_widget' => '<li class="homepage-widget-block">',
'after_widget' => '</li>',
'before_title' => '<h2 class="widgettitle">',
'after_title' => '</h2>',
) );
}
add_action( 'widgets_init', 'register_my_widgets' );
В файл home.php вставим вывод панели:
<div class="custom">
<?php
if ( function_exists('dynamic_sidebar') )
dynamic_sidebar('homepage-sidebar');
?>
</div> #2 Регистрация виджетов для боковой панели сайта
Код ниже, зарегистрирует панель под названием "Правая боковая панель сайта". Название панели будет обвёрнуто в теги <div class="title"> и </div>:
function register_my_widgets(){
register_sidebar( array(
'name' => "Правая боковая панель сайта",
'id' => 'right-sidebar',
'description' => 'Эти виджеты будут показаны в правой колонке сайта',
'before_title' => '<h2>',
'after_title' => '</h2>'
) );
}
add_action( 'widgets_init', 'register_my_widgets' );
После того, как мы разместим этот код в файл темы functions.php, в админ-панели на странице виджетов, появится панель, куда мы сможем добавить виджеты. В шаблоне эта панель выводится с помощью функции dynamic_sidebar():
<?php
if ( function_exists('dynamic_sidebar') )
dynamic_sidebar('right-sidebar');
?>
—
Вы можете купить недорогие репины в Пинтерест с помощью сервиса Doctor SMM. На сайте Вам будет предложен выбор любого необходимого количества материала. К тому же, Вы сможете развивать не только посты, но и всю страницу целиком, сделав заказ еще и на подписчиков.
Заметки
- Global. Массив. $wp_registered_sidebars The registered sidebars.
Список изменений
| С версии 2.2.0 | Введена. |
| С версии 5.6.0 | Added the before_sidebar and after_sidebar arguments. |
| С версии 5.9.0 | Added the show_in_rest argument. |