unregister_widget()
Скасує реєстрацію віджету. Видаляє віджет за вказаною назвою класу віджету.
Ця функція дозволяє вимкнути/скасувати/видалити будь-який раніше зареєстрований віджет 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
Приклади
#1 Видалимо віджет
Цей приклад показує, як скасувати реєстрацію віджету Календар. Може стати в нагоді коли потрібно замінити стандартний віджет на свій:
add_action( 'widgets_init', 'remove_calendar_widget');
function remove_calendar_widget() {
unregister_widget('WP_Widget_Calendar');
}#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 .
#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_Widget
- Global. WP_Widget_Factory. $wp_widget_factory
список змін
| З версії 2.8.0 | Введено. |
| З версії 4.6.0 | Updated the $widget parameter для того, щоб accept a WP_Widget instance object instead of simply a WP_Widget subclass name. |
Код unregister_widget() unregister widget WP 6.0.2
function unregister_widget( $widget ) {
Global $wp_widget_factory;
$wp_widget_factory->unregister( $widget );
}