WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

unregister_widget()WP 2.8.0

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

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

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

Хуков нет.

Возвращает

null. Ничего.

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

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

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

WP_Widget_Pages            // Виджет страниц
WP_Widget_Calendar         // Календарь
WP_Widget_Archives         // Архивы
WP_Widget_Links            // Ссылки
WP_Widget_Meta             // Мета виджет
WP_Widget_Search           // Поиск
WP_Widget_Text             // Текст
WP_Widget_Categories       // Категории
WP_Widget_Recent_Posts     // Последние записи
WP_Widget_Recent_Comments  // Последние комментарии
WP_Widget_RSS              // RSS
WP_Widget_Tag_Cloud        // Облако меток
WP_Nav_Menu_Widget         // Меню
WP_Widget_Custom_HTML
WP_Widget_Media_Audio
WP_Widget_Media_Video
WP_Widget_Media_Gallery
WP_Widget_Media_Image

Примеры

0

#1 Удалим виджет

Этот пример показывает как отменить регистрацию виджета Календарь. Может пригодится когда нужно заменить стандартный виджет на свой:

add_action( 'widgets_init', 'remove_calendar_widget' );
function remove_calendar_widget() {
	unregister_widget('WP_Widget_Calendar');
}
0

#2 Отключаем все стандартные виджеты WordPress

Чтобы отключить все базовые виджеты в 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');      // Audio
	unregister_widget('WP_Widget_Media_Video');      // Video
	unregister_widget('WP_Widget_Media_Gallery');    // Gallery
	unregister_widget('WP_Widget_Media_Image');      // Image
}

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

0

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

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

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

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

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

0

#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_Widget
  • Global. WP_Widget_Factory. $wp_widget_factory

Список изменений

С версии 2.8.0 Введена.
С версии 4.6.0 Updated the $widget parameter to also accept a WP_Widget instance object instead of simply a WP_Widget subclass name.

Код unregister_widget() WP 6.5.2

function unregister_widget( $widget ) {
	global $wp_widget_factory;

	$wp_widget_factory->unregister( $widget );
}
4 комментария
    Войти