Функция unregister_widget()
в WordPress позволяет отменить регистрацию виджетов, созданных на основе класса WP_Widget
. Это может быть полезно, если вы хотите отключить стандартные виджеты, которые не соответствуют стилю вашего сайта, или заменить их собственными виджетами.
unregister_widget( string|WP_Widget $widget );
Параметры
- $widget (обязательный): строка или объект класса
WP_Widget
, представляющий виджет, который нужно отменить.
Описание
Функция unregister_widget()
удаляет виджет, который был зарегистрирован в WordPress. После его удаления также будут потеряны все настройки этого виджета. Поэтому перед использованием этой функции убедитесь, что вам не нужны настройки или данные виджета.
Список стандартных виджетов
Некоторые стандартные виджеты, которые вы можете удалить с помощью unregister_widget()
, включают:
WP_Widget_Pages
— Виджет страницWP_Widget_Calendar
— КалендарьWP_Widget_Archives
— АрхивыWP_Widget_Links
— СсылкиWP_Widget_Search
— ПоискWP_Widget_Text
— ТекстWP_Widget_Categories
— КатегорииWP_Widget_Recent_Posts
— Последние записиWP_Widget_Custom_HTML
— Пользовательский HTML- и другие…
Пример 1: Удаление виджета «Календарь»
Вот как можно отменить регистрацию стандартного виджета «Календарь». Это может быть полезно, если вы хотите использовать свой собственный виджет вместо стандартного.
function remove_calendar_widget() {
unregister_widget( 'WP_Widget_Calendar' );
}
add_action( 'widgets_init', 'remove_calendar_widget' );
Пример 2: Отключение всех стандартных виджетов
Если вы хотите отключить все стандартные виджеты в WordPress, вы можете использовать следующий код:
function disable_default_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' ); // Меню
}
add_action( 'widgets_init', 'disable_default_widgets' );
Пример 3: Полное отключение поддержки виджетов
Если вы хотите полностью отключить поддержку виджетов в WordPress, используйте следующий код:
remove_action( 'init', 'wp_widgets_init', 1 );
Этот код предотвратит загрузку всех стандартных виджетов, а также отключит возможность использования виджетов в плагинах и темах.
Пример 4: Полное отключение базовых виджетов
Если вам нужно отключить базовые виджеты, сохранив при этом возможность добавления собственных виджетов, используйте следующий код:
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 );
add_action( 'init', 'my_custom_widgets_init', 1 );
function my_custom_widgets_init() {
if ( ! is_blog_installed() ) return;
/**
* Срабатывает после того, как все стандартные виджеты WordPress были зарегистрированы.
*
* @since 2.2.0
*/
do_action( 'widgets_init' );
}
С помощью этого кода вы отключите все стандартные виджеты, но оставите возможность добавления пользовательских виджетов с такими же именами классов, как у стандартных виджетов.
Заключение
Функция unregister_widget()
предоставляет возможность гибко управлять виджетами на вашем сайте WordPress. Удаляя ненужные виджеты, вы можете улучшить пользовательский интерфейс и адаптировать его под свои нужды. Обязательно учитывайте настройки виджетов, которые будут потеряны при их удалении.