Регистрация Виджета в WordPress: Руководство с примерами кода

Регистрация Виджета в 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!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *