# 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.