wp_register_sidebar_widget()
Регистрирует виджет, который затем можно добавить в панель виджетов (сайдбар) в админ-панели.
Хуки из функции
Возвращает
null. Ничего не возвращает.
Использование
wp_register_sidebar_widget( $id, $name, $output_callback, $options, ...$params );
- $id(строка/число) (обязательный)
- ID виджета, уникальное название. Например,
your_widget_1. - $name(строка) (обязательный)
- Заголовок виджета, по которому его можно будет узнать в админ-панели.
- $output_callback(строка) (обязательный)
Функция обратного вызова, которая будет запускаться при вызове виджета в шаблоне.
Параметры передаваемые функции обратного вызова ($output_callback):
function my_output_callback_function( $args, $params ){ ... }-
$args(массив) (обязательный)
Параметры виджета, регистрируемые при регистрации виджета:widget_id,widget_nameи т.д. - $params(массив) (обязательный)
Дополнительные параметры передаваемые функции, параметр$paramsфункцииwp_register_sidebar_widget().
К параметрам применяется фильтр dynamic_sidebar_params, перед вызовом функции обратного вызова.
-
- $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(строка/массив/число/объект/логический)
- Параметры, которые будут добавлены к виджету.
Примеры
#1 Регистрация рекурсивного виджета
При регистрации виджета с помощью 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' ); #2 Создание виджета
Следующий код, создаст виджет "Мой виджет", который станет доступен в админ-панели 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' => 'Описание виджета, для чего он нужен, что он делает'
)
);
Заметки
- 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. |