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.0Updated the $widget parameter для того, щоб accept a WP_Widget instance object instead of simply a WP_Widget subclass name.

Код unregister_widget() WP 6.0.2

function unregister_widget( $widget ) {
	Global $wp_widget_factory;

	$wp_widget_factory->unregister( $widget );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *