Как использовать функцию unregister_widget() в WordPress

# UNREGISTER_WIDGET() │ WP 2.8.0

## Что делает функция unregister_widget?

Функция unregister_widget удаляет виджет из WordPress. Это полезно, если вы хотите убрать стандартные виджеты, которые не нужны вашему сайту.

### Когда использовать?

Эту функцию нужно использовать в специальной функции, которая срабатывает во время действия, называемого widgets_init. Это действие запускается каждый раз, когда загружаются виджеты.

### Возвращаемое значение

Функция ничего не возвращает (null).

## Как использовать

Синтаксис функции:
```php
unregister_widget( $widget );
  • $widget (string|WP_Widget) (обязательный параметр) — имя класса виджета, который вы хотите удалить, или его экземпляр.

Примеры использования

Пример 1: Удаление виджета Календарь

Этот пример показывает, как удалить виджет Календаря. Это может быть полезно, если вы хотите заменить стандартный виджет своим собственным:

add_action( 'widgets_init', 'remove_calendar_widget' );

function remove_calendar_widget() {
    unregister_widget('WP_Widget_Calendar');
}

Пример 2: Отключение всех стандартных виджетов

Чтобы отключить все стандартные виджеты в WordPress сразу, используйте следующий код:

// Отключаем стандартные виджеты WordPress
add_action('widgets_init', 'unregister_basic_widgets' );

function unregister_basic_widgets() {
    unregister_widget('WP_Widget_Pages');           // Виджет страниц
    unregister_widget('WP_Widget_Calendar');        // Календарь
    unregister_widget('WP_Widget_Archives');        // Архивы
    unregister_widget('WP_Widget_Links');           // Ссылки
    unregister_widget('WP_Widget_Meta');            // Метаданные
    unregister_widget('WP_Widget_Search');          // Поиск
    unregister_widget('WP_Widget_Text');            // Текст
    unregister_widget('WP_Widget_Categories');      // Категории
    unregister_widget('WP_Widget_Recent_Posts');    // Последние записи
    unregister_widget('WP_Widget_Recent_Comments'); // Недавние комментарии
    unregister_widget('WP_Widget_RSS');             // RSS
    unregister_widget('WP_Widget_Tag_Cloud');       // Облако тегов
    unregister_widget('WP_Nav_Menu_Widget');        // Меню
    unregister_widget('WP_Widget_Media_Audio');     // Аудио
    unregister_widget('WP_Widget_Media_Video');     // Видео
    unregister_widget('WP_Widget_Media_Gallery');   // Галерея
    unregister_widget('WP_Widget_Media_Image');     // Изображение
}

Этот код нужно вставить в файл вашей темы functions.php.

Пример 3: Отключение поддержки виджетов в WordPress

Если вам нужно отключить все виджеты, лучше сделать это до их подключения. Для этого используйте следующий код:

remove_action( 'init', 'wp_widgets_init', 1 );

add_action( '_admin_menu', 'wp_widgets_add_menu' );

// Отключаем регистрацию виджетов
remove_action( 'init', 'wp_widgets_init', 1 );

add_action( 'init', 'my_wp_widgets_init', 1 );
function my_wp_widgets_init(){
    if ( !is_blog_installed() ) return;

    /**
     * Срабатывает после регистрации всех стандартных виджетов WordPress.
     * 
     * @since 2.2.0
     */
    do_action( 'widgets_init' );
}

Этот код отключит все базовые виджеты, но меню виджетов в админке останется доступным. Вы также сможете создавать свои собственные виджеты с теми же именами классов, что и стандартные.

Примечания

  • Не забудьте, что для корректной работы требуется объект WP_Widget_Factory.
  • С версии 4.6.0 параметр $widget теперь может принимать как строку с именем класса виджета, так и экземпляр класса виджета.

Изменения

  • Введена в версии 2.8.0. Обновлена в версии 4.6.0.

Leave a Reply

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