wp_register_sidebar_widget()
Регистрирует виджет, который затем можно добавить в панель виджетов (сайдбар) в админ-панели.
Основа для: wp_unregister_sidebar_widget()
Хуки из функции
Возвращает
null
. Ничего не возвращает.
Использование
wp_register_sidebar_widget( $id, $name, $output_callback, $options, ...$params );
- $id(строка/число) (обязательный)
- ID виджета, уникальное название. Например,
your_widget_1
. - $name(строка) (обязательный)
- Заголовок виджета, по которому его можно будет узнать в админ-панели.
- $output_callback(строка) (обязательный)
- Функция обратного вызова, которая будет запускаться при вызове виджета в шаблоне.
- $options(строка/массив)
Настройки виджета. Пример:
$widget_ops = array( 'classname' => 'widget_block', 'description' => __( 'A widget containing a block.' ), 'customize_selective_refresh' => true, 'show_instance_in_rest' => true, // c WP 5.8 'mime_type' => '', );
По умолчанию: array()
- ...$params(строка/массив/число/объект/логический)
- Параметры, которые будут добавлены к виджету.
Параметры передаваемые функции обратного вызова ($output_callback)
function my_output_callback_function( $args, $params ){ ... }
- $args(массив) (обязательный)
- Параметры виджета, регистрируемые при регистрации виджета:
widget_id
,widget_name
и т.д. - $params(массив) (обязательный)
- Дополнительные параметры передаваемые функции, параметр
$params
функцииwp_register_sidebar_widget()
.
К параметрам применяется фильтр dynamic_sidebar_params
, перед вызовом функции обратного вызова.
Примеры
#1 Создание виджета
Следующий код, создаст виджет "Мой виджет", который станет доступен в админ-панели WordPress. Этот виджет можно будет перетащить в доступную панель виджетов (сайдбар).
function your_widget_display($args) { extract($args); echo $before_widget; echo $before_title . 'Мой уникальный виджет' . $after_title; // Код виджета, при выводе в шаблон echo "Your Widget Test"; echo $after_widget; } wp_register_sidebar_widget( 'your_widget_1', // ID виджета 'Мой виджет', // Заголовок виджета 'your_widget_display', // Функция обратного вызова array( // Настройки 'description' => 'Описание виджета, для чего он нужен, что он делает' ) );
#2 Регистрация рекурсивного виджета
При регистрации виджета с помощью wp_register_sidebar_widget(), виджет можно будет использоваться только 1 раз, его можно будет добавить только в 1 сайдбар. Для регистрации виджетов, которые можно использовать множество раз, используйте функцию register_widget():
class My_New_Widget extends WP_Widget { function My_New_Widget () { // Экземпляр родительского объекта parent::__construct( false, 'Заголовок нового виджета' ); } function widget( $args, $instance ) { // Вывод виджета на экран } function update( $new_instance, $old_instance ) { // Сохранение настроек виджета } function form( $instance ) { // Форма настроек виджета в админ-панели } } function register_My_New_Widget() { register_widget( 'My_New_Widget' ); } add_action( 'widgets_init', 'register_My_New_Widget' );
Заметки
- Global. Массив. $wp_registered_widgets Uses stored registered widgets.
- Global. Массив. $wp_registered_widget_controls Stores the registered widget controls (options).
- Global. Массив. $wp_registered_widget_updates The registered widget updates.
- Global. Массив. $_wp_deprecated_widgets_callbacks
Список изменений
С версии 2.2.0 | Введена. |
С версии 5.3.0 | Formalized the existing and already documented ...$params parameter by adding it to the function signature. |
С версии 5.8.0 | Added show_instance_in_rest option. |