Функция wp_register_sidebar_widget()
используется для регистрации виджетов в WordPress. С её помощью разработчики могут создавать и настраивать виджеты, которые будут доступны в административной панели и могут быть добавлены в боковые панели (сайдбары) сайта.
wp_register_sidebar_widget( int|string $id, string $name, callable $output_callback, array $options = array(), mixed $params = null );
Параметры
- $id (int|string, обязательный): Уникальный идентификатор виджета, который будет использоваться для его регистрации. Например,
my_custom_widget_1
. - $name (string, обязательный): Название виджета, которое будет отображаться в административной панели.
- $output_callback (callable, обязательный): Функция обратного вызова, которая будет вызываться для отображения содержимого виджета.
- $options (array, необязательный): Массив дополнительных параметров виджета.
classname
: Класс для HTML-контейнера виджета. По умолчанию это сокращённая версия имени функции обратного вызова.description
: Описание виджета для отображения в панели администратора.show_instance_in_rest
: Определяет, будет ли отображаться настройки экземпляра виджета в REST API. Доступно только для виджетов на основе классаWP_Widget
.
- $params (mixed, необязательный): Дополнительные параметры, которые будут переданы в функцию обратного вызова при её вызове.
Возвращаемое значение
- null: Функция не возвращает значений.
Пример 1: Создание базового виджета
В этом примере мы создадим виджет с названием «Мой пользовательский виджет», который будет доступен в админ-панели WordPress:
// Функция для отображения виджета
function my_custom_widget_display($args) {
// Извлекаем параметры виджета
extract($args);
echo $before_widget; // Начало контейнера виджета
echo $before_title . 'Мой пользовательский виджет' . $after_title; // Заголовок виджета
echo 'Тестирование виджета'; // Содержимое виджета
echo $after_widget; // Конец контейнера виджета
}
// Регистрация виджета
wp_register_sidebar_widget(
'my_custom_widget_1', // Уникальный ID виджета
'Мой пользовательский виджет', // Заголовок виджета
'my_custom_widget_display', // Функция обратного вызова
array( // Дополнительные опции
'description' => 'Это мой первый пользовательский виджет.'
)
);
Пример 2: Регистрация виджета с дополнительными параметрами
Давайте добавим более подробные параметры для виджета, включая класс и описание:
// Функция для отображения виджета с параметрами
function advanced_widget_display($args) {
extract($args);
echo $before_widget;
echo $before_title . 'Расширенный виджет' . $after_title;
echo '<p>Это расширенный виджет с дополнительными параметрами.</p>';
echo $after_widget;
}
// Регистрация расширенного виджета
wp_register_sidebar_widget(
'advanced_widget_1', // Уникальный ID виджета
'Расширенный виджет', // Заголовок виджета
'advanced_widget_display', // Функция обратного вызова
array( // Дополнительные опции
'classname' => 'advanced-widget',
'description' => 'Виджет с дополнительными функциями.'
)
);
Пример 3: Регистрация рекурсивного виджета
Если вы хотите создать многоразовый виджет, который можно использовать несколько раз, вам нужно использовать класс WP_Widget
. Вот пример:
<?php
class My_Multiple_Widget extends WP_Widget {
// Конструктор класса
public function __construct() {
parent::__construct(
'my_multiple_widget', // Уникальный ID виджета
'Мой многоразовый виджет' // Заголовок виджета
);
}
// Функция для отображения виджета
public function widget($args, $instance) {
echo $args['before_widget'];
echo $args['before_title'] . apply_filters('widget_title', $instance['title']) . $args['after_title'];
echo '<p>' . __('Это многоразовый виджет!') . '</p>';
echo $args['after_widget'];
}
// Функция для обновления настроек виджета
public function update($new_instance, $old_instance) {
$instance = array();
$instance['title'] = (!empty($new_instance['title'])) ? strip_tags($new_instance['title']) : '';
return $instance;
}
// Функция для отображения формы настроек виджета в админ-панели
public function form($instance) {
$title = !empty($instance['title']) ? $instance['title'] : __('Новый заголовок', 'text_domain');
?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Заголовок:'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>">
</p>
<?php
}
}
// Регистрация многоразового виджета
function register_my_multiple_widget() {
register_widget('My_Multiple_Widget');
}
add_action('widgets_init', 'register_my_multiple_widget');
Заключение
Функция wp_register_sidebar_widget()
является мощным инструментом для разработчиков WordPress, позволяя им создавать виджеты, которые можно легко добавлять в боковые панели сайта. С помощью этой функции вы можете настроить как простые, так и многоразовые виджеты, делая ваш сайт более интерактивным и полезным для пользователей.