unregister_widget

Отменяет регистрацию виджета. Удаляет виджет по указанному названию класса виджета.

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

При удалении виджета таким способом, также удаляются все его настройки. Т.е. если виджет имеет богатый выбор настроек и вы его отменили, то все настройки будут потеряны…

Хуков нет.

Возвращает

Использование

unregister_widget( $widget_class );
$widget_class(объект) (обязательный)

Название класса, который регистрирует виджет, путем расширения WP_Widget. Стандартные называния классов:

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');         // Меню
}

Используйте этот код в файле темы functions.php.

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

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

Но, если вам нужно отключить абсолютно все виджет разом, то лучше сделать это до того, как они будут подключены, т.е. вообще их не подключать и не вызывать событие которое подключает остальные виджеты. Для этого открепите функцию wp_widgets_init() от события init, вот так:

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


Кроме подключения виджетов функция wp_widgets_init() вызывает событие widgets_init на которое обычно вешаются хуки включения виджетов из плагинов. Поэтому при отключении этого хука, скорее всего и виджеты плагинов и тем работать не будут. Т.е. поддержка виджетов будет отключена полностью.

#4 Основательное отключение базовых виджетов

Этот пример показывает как отключить базовые виджеты WordPress. Но сделать это надо так, чтобы отключались подключаемые PHP файлы виджетов и после отключение не существовало классов базовых виджетов: WP_Widget_Pages, WP_Widget_Search и т.д. После такого отключения мы можем создать свои виджеты с названиями базовых классов. Это если можно так сказать отключение базовых виджетов на корню.

Так как это низкоуровневая настройка, такой код должен находиться либо в обычном плагине, либо в обязательном плагине, но не позже…

remove_action( 'plugins_loaded', 'wp_maybe_load_widgets', 0 );
// включим событие отключенное в wp_maybe_load_widgets
add_action( '_admin_menu', 'wp_widgets_add_menu' );

// чтобы не регистрировались виджеты классов которых теперь вообще нет...
remove_action( 'init', 'wp_widgets_init', 1 );

// включим событие отключенное в wp_widgets_init
add_action( 'init', 'my_wp_widgets_init', 1 );
function my_wp_widgets_init(){
	if ( !is_blog_installed() ) return;

	/**
	 * Fires after all default WordPress widgets have been registered.
	 *
	 * @since 2.2.0
	 */
	do_action( 'widgets_init' );
}

После установки этого кода, будут отключены все базовые виджеты, но меню виджетов в админ-панели останется рабочим… А также вы сможете написать свои виджеты с названиями PHP классов базовых виджетов: WP_Widget_Pages, WP_Widget_Search и т.д.

Код из


wp-includes/widgets.php

WP 4.7.2

<?php
function unregister_widget($widget_class) {
	global $wp_widget_factory;

	$wp_widget_factory->unregister($widget_class);
}