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 ); }