Регистрация Виджета в WordPress
Функция register_widget() используется для регистрации виджета на платформе WordPress. Это позволяет создавать пользовательские виджеты, которые можно добавлять в боковые панели и другие области вашего сайта.
Возвращаемое значение
Функция не возвращает никакое значение (null).
Использование
Для регистрации виджета необходимо использовать следующую функцию:
register_widget( $widget );
Параметр:
$widget(string|WP_Widget) (обязательный) — Это может быть имя подкласса WP_Widget или экземпляр класса WP_Widget.
Примеры
Пример 1: Шаблон для создания виджета
Этот код расширяет базовый класс виджета WP_Widget и создает новый виджет, который можно использовать многократно:
// Регистрация класса виджета
add_action( 'widgets_init', 'my_register_widgets' );
function my_register_widgets() {
register_widget( 'My_Widget' );
}
// Класс виджета
class My_Widget extends WP_Widget {
function __construct() {
// Начинаем инициализацию родительского класса
parent::__construct(
'widget_identifier', // идентификатор виджета, если не указан, будет таким же, как название класса в нижнем регистре
'Название виджета',
array('description' => 'Описание виджета')
);
// Подключение стилей и скриптов виджета только если он активен
if ( is_active_widget( false, false, $this->id_base ) || is_customize_preview() ) {
add_action('wp_enqueue_scripts', array( $this, 'add_my_widget_scripts' ));
add_action('wp_head', array( $this, 'add_my_widget_style' ) );
}
}
// Вывод виджета
function widget( $args, $instance ) {
$title = apply_filters( 'widget_title', $instance['title'] );
echo $args['before_widget'];
if( $title )
echo $args['before_title'] . $title . $args['after_title'];
echo 'Привет!';
echo $args['after_widget'];
}
// Сохранение настроек виджета (очистка)
function update( $new_instance, $old_instance ) {
// Логика обновления параметров
}
// HTML форма настроек виджета в панели администратора
function form( $instance ) {
// Логика для вывода формы
}
// Скрипты для виджета
function add_my_widget_scripts() {
if( ! apply_filters( 'show_my_widget_script', true, $this->id_base ) )
return;
$theme_url = get_stylesheet_directory_uri();
wp_enqueue_script('my_widget_script', $theme_url .'/my_widget_script.js' );
}
// Стили для виджета
function add_my_widget_style() {
if( ! apply_filters( 'show_my_widget_style', true, $this->id_base ) )
return;
?>
Пример 2: Создание виджета с настройками
В этом примере создается виджет Foo_Widget, в котором можно настраивать заголовок виджета:
add_action( 'widgets_init', 'register_foo_widget' );
// Регистрация Foo_Widget в WordPress
function register_foo_widget() {
register_widget( 'Foo_Widget' );
}
class Foo_Widget extends WP_Widget {
function __construct() {
parent::__construct(
'foo_widget',
'Заголовок Виджета',
array('description' => 'Описание виджета')
);
if ( is_active_widget( false, false, $this->id_base ) || is_customize_preview() ) {
add_action('wp_enqueue_scripts', array( $this, 'add_my_widget_scripts' ));
add_action('wp_head', array( $this, 'add_my_widget_style' ) );
}
}
function widget( $args, $instance ) {
$title = apply_filters( 'widget_title', $instance['title'] );
echo $args['before_widget'];
if ( ! empty( $title ) ) {
echo $args['before_title'] . $title . $args['after_title'];
}
echo __( 'Привет, мир!', 'text_domain' );
echo $args['after_widget'];
}
function form( $instance ) {
$title = isset($instance['title']) ? $instance['title'] : 'Заголовок по умолчанию';
?>
id_base ) )
return;
$theme_url = get_stylesheet_directory_uri();
wp_enqueue_script('my_widget_script', $theme_url .'/my_widget_script.js' );
}
function add_my_widget_style() {
if( ! apply_filters( 'show_my_widget_style', true, $this->id_base ) )
return;
?>
Примечания
WP_Widgetявляется основным классом для создания виджетов в WordPress.- Не забудьте подключать необходимые скрипты и стили, когда виджет активен.
Изменения
С версии 2.8.0 была введена функция register_widget(), а с версии 4.6.0 параметр $widget обновился и теперь поддерживает не только имя класса подкласса WP_Widget, но и его экземпляр.
Теперь вы можете создавать и регистрировать свои собственные виджеты, используя приведенные примеры. Это отличный способ добавить уникальный функционал на ваш сайт WordPress!