Как удалить неиспользуемые виджеты в WooCommerce без плагинов

Диагностика проблемы: зачем удалять виджеты WooCommerce

Многие темы и плагины WooCommerce автоматически регистрируют виджеты, которые могут не использоваться на вашем сайте, но остаются в админке. Это засоряет панель управления, замедляет загрузку страниц и усложняет поддержку. Чтобы избавиться от них, нужно точно определить, какие виджеты не нужны, и отключить их программно.

Как определить неиспользуемые виджеты WooCommerce

  • Перейдите в «Внешний вид» → «Виджеты» и посмотрите список доступных WooCommerce виджетов.
  • Проверьте, какие из них не добавлены ни в одну область (сайдбар, футер и т.п.).
  • Просмотрите код темы и плагинов на предмет вызовов the_widget() или регистрации виджетов через register_widget().

Чаще всего виджеты WooCommerce, которые можно отключить без проблем:

  • WooCommerce Product Categories
  • WooCommerce Price Filter
  • WooCommerce Recent Reviews
  • WooCommerce Layered Nav

Пошаговое решение: отключение виджетов WooCommerce через functions.php

Для удаления виджетов из доступных используйте хук widgets_init с приоритетом после регистрации виджетов WooCommerce. Вставьте следующий код в functions.php вашей дочерней темы или в специально созданный плагин:

add_action('widgets_init', 'remove_unused_woocommerce_widgets', 20);
function remove_unused_woocommerce_widgets() {
    unregister_widget('WC_Widget_Product_Categories');
    unregister_widget('WC_Widget_Price_Filter');
    unregister_widget('WC_Widget_Recent_Reviews');
    unregister_widget('WC_Widget_Layered_Nav');
}

Обратите внимание: имена классов виджетов должны быть точными, как они определены в WooCommerce (файл includes/widgets/ в плагине WooCommerce).

Альтернативный способ — отключить все виджеты WooCommerce

Если нужно быстро убрать все виджеты WooCommerce, можно использовать такой код:

add_action('widgets_init', function() {
    global $wp_widget_factory;
    foreach ($wp_widget_factory->widgets as $widget_class => $widget_object) {
        if (strpos($widget_class, 'WC_Widget') === 0) {
            unregister_widget($widget_class);
        }
    }
}, 20);

Проверка результата после внедрения

Чтобы убедиться, что виджеты удалены:

  1. Перейдите в раздел «Внешний вид» → «Виджеты» и проверьте, что перечисленные WooCommerce виджеты отсутствуют в списке.
  2. Обновите любую страницу сайта с виджетами WooCommerce, чтобы убедиться, что они не отображаются.
  3. Проверьте консоль браузера на отсутствие ошибок JavaScript, связанных с виджетами.

Частые ошибки и как их исправить

  • Ошибка: Виджеты не исчезают после добавления кода.
    Причина: Приоритет хука widgets_init слишком низкий, код срабатывает раньше регистрации виджетов.
    Решение: Увеличьте приоритет до 20 или выше.
  • Ошибка: Фатальная ошибка PHP Class 'WC_Widget_Product_Categories' not found.
    Причина: WooCommerce еще не загружен при выполнении кода.
    Решение: Оберните вызов unregister_widget() в проверку на существование класса:
if ( class_exists('WC_Widget_Product_Categories') ) {
    unregister_widget('WC_Widget_Product_Categories');
}
  • Ошибка: Виджеты исчезли из админки, но сайт выдаёт ошибки.
    Причина: Виджеты используются в коде темы или плагина.
    Решение: Проверьте шаблоны и замените вызовы удалённых виджетов или отключите их в настройках.

Практические советы по безопасности и производительности

  • Удаление неиспользуемых виджетов сокращает нагрузку на админку, улучшая производительность.
  • Не удаляйте виджеты без проверки — это может привести к ошибкам на фронтенде.
  • Для масштабируемых решений лучше создавать дочернюю тему или собственный плагин, чтобы не потерять изменения при обновлении WooCommerce.
  • Регулярно проверяйте наличие новых виджетов после обновлений WooCommerce.

Чек-лист для удаления неиспользуемых виджетов WooCommerce

  • Определите список виджетов, которые не используются на сайте.
  • Проверьте наличие классов виджетов в WooCommerce.
  • Добавьте код с unregister_widget() в functions.php или плагин с приоритетом 20+.
  • Проверьте админку на отсутствие виджетов.
  • Проверьте фронтенд сайта на ошибки и корректность отображения.
  • Резервируйте сайт перед изменениями.

Таблица сравнения методов удаления виджетов WooCommerce

МетодОписаниеПлюсыМинусы
Отключение через unregister_widget()Удаление конкретных виджетов через код в functions.phpТочный контроль, не требует плагиновНужно знать точные имена классов, возможны ошибки при обновлениях
Отключение всех виджетов WooCommerceУдаление всех виджетов WC через перебор глобального массиваБыстро и простоМожет сломать функционал, если виджеты используются
Удаление через плагиныИспользование плагинов для управления виджетамиПростота использования, удобный UIДополнительная нагрузка, меньше контроля
Как автоматизировать управление доступом к записям в WordPress по ролям и меткам
29.03.2026
Как автоматизировать удаление отзывов с пустым содержанием в WooCommerce
09.07.2026
Как автоматизировать удаление неиспользуемых вариативных изображений WooCommerce
12.05.2026
Хук WooCommerce 'woocommerce_order_status_changed': практическое применение для автоматизации
16.05.2026
Как автоматизировать создание и удаление черновиков в WordPress
12.03.2026