В процессе разработки и настройки WordPress-сайтов часто возникает проблема с накоплением неиспользуемых виджетов. Они могут оставаться в списке доступных виджетов, создавать путаницу для пользователей и даже немного замедлять админку. В этой статье мы подробно рассмотрим, как убрать неиспользуемые виджеты программно, оптимизировать админ-панель и сделать тему более чистой и понятной.
Почему важно удалять неиспользуемые виджеты
Неиспользуемые виджеты — это те, которые не добавлены на боковые панели или другие области, но остаются в списке доступных в админке. Их удаление важно по нескольким причинам:
- Удобство пользователей: меньше лишних элементов в списке виджетов — легче ориентироваться.
- Оптимизация загрузки: некоторые виджеты подключают свои скрипты и стили, что увеличивает нагрузку.
- Безопасность: устаревшие или неиспользуемые виджеты могут содержать уязвимости.
Удаление ненужных виджетов — это хорошая практика в разработке и сопровождении сайтов.
Как узнать, какие виджеты можно удалить
Перед удалением важно понять, какие виджеты действительно не используются и не нужны. Для этого можно:
- Проверить раздел Внешний вид > Виджеты — посмотреть, какие виджеты активны и в каких областях.
- Проанализировать код темы и плагинов — возможно, какие-то виджеты подключаются, но вы не используете их.
- Обратиться к заказчику или пользователям сайта — уточнить, какие виджеты нужны.
Всегда делайте резервную копию перед удалением.
Удаление виджетов с помощью кода: wp-snippets метод
Самый надежный способ удалить виджеты — использовать хук widgets_init и функцию unregister_widget(). Ниже пример, как убрать стандартные виджеты, которые не нужны в проекте.
add_action('widgets_init', 'wpsnippets_unregister_unused_widgets', 11);
function wpsnippets_unregister_unused_widgets() {
// Удаляем стандартный виджет Archives
unregister_widget('WP_Widget_Archives');
// Удаляем виджет Календарь
unregister_widget('WP_Widget_Calendar');
// Удаляем виджет Метки
unregister_widget('WP_Widget_Tag_Cloud');
// Добавьте свои виджеты здесь
}В этом коде функция wpsnippets_unregister_unused_widgets вызывается с приоритетом 11, чтобы сработать после регистрации всех виджетов. Внутри мы указываем классы виджетов, которые хотим убрать. Можно добавлять любые виджеты, зная их классы.
Как узнать класс виджета для удаления
Если вы используете сторонний плагин с виджетами, класс можно узнать так:
- Посмотрите в папке плагина или темы файл с описанием виджета — обычно класс наследует
WP_Widget. - В админке через инспектор кода найдите виджет — обычно класс совпадает с именем файла или упоминается в комментариях.
Пример удаления виджетов из популярных плагинов
Допустим, вы используете плагин WPStories, но решили не использовать его виджеты. Чтобы убрать виджет WPStories_Widget, добавьте в функцию:
unregister_widget('WPStories_Widget');Аналогично для других плагинов — узнайте классы их виджетов и удалите, если они не нужны.
Удаление виджетов через плагин Clearfy Pro для оптимизации
Если хотите упростить задачу и не писать код, можно использовать плагин Clearfy Pro. Он позволяет отключать ненужные виджеты и функции одним кликом, оптимизируя сайт и админку.
Clearfy Pro удобен, если вы не хотите заниматься кодом, но хотите повысить производительность и убрать лишнее в интерфейсе.
Как убрать виджеты из REST API и Gutenberg
Некоторые виджеты регистрируются не только для классического редактора, но и для REST API или блоков Gutenberg. Чтобы полностью отключить виджет, иногда нужно снять регистрацию и в этих областях. Например:
add_filter('rest_api_init', function() {
unregister_widget('WP_Widget_Recent_Comments');
});Хотя чаще всего достаточно стандартного widgets_init.
Подсказки и рекомендации при удалении виджетов
- Удаляйте виджеты постепенно, проверяя сайт и админку на ошибки.
- Если виджет связан с функционалом, который вы используете, не удаляйте его.
- Используйте дочернюю тему для добавления кода, чтобы обновления не стирали изменения.
- Тестируйте изменения на тестовом или локальном сервере.
Итоговое решение: полный пример функции удаления неиспользуемых виджетов
add_action('widgets_init', 'wpsnippets_unregister_unused_widgets', 11);
function wpsnippets_unregister_unused_widgets() {
// Стандартные виджеты
unregister_widget('WP_Widget_Archives');
unregister_widget('WP_Widget_Calendar');
unregister_widget('WP_Widget_Tag_Cloud');
unregister_widget('WP_Widget_Recent_Comments');
// Виджеты плагина WPStories
if (class_exists('WPStories_Widget')) {
unregister_widget('WPStories_Widget');
}
// Добавьте свои виджеты ниже
}
Этот код можно добавить в файл functions.php вашей дочерней темы или в специальный плагин для сниппетов. Он удалит несколько стандартных и сторонних виджетов, которые вы не планируете использовать.