Как удалить пустые варианты атрибутов в WooCommerce с помощью кода

Диагностика проблемы: пустые варианты атрибутов в WooCommerce

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

Чтобы проверить наличие пустых вариантов, перейдите в Товары > Атрибуты, выберите нужный атрибут и нажмите «Настроить термины». Там отобразятся все варианты, включая те, которые не используются ни в одном товаре.

Пошаговое решение: удаление пустых вариантов атрибутов через PHP

1. Использование WP-CLI для быстрой проверки (опционально)

Если у вас есть доступ к WP-CLI, можно быстро проверить количество товаров на каждый термин атрибута:

wp term list pa_color --format=json --fields=term_id,name,count

Значение поля count показывает, сколько товаров привязано к термину. Нулевые — кандидаты на удаление.

2. PHP-скрипт для автоматического удаления пустых вариантов

Добавьте следующий код в файл functions.php вашей дочерней темы или в отдельный плагин. Код обходит все термины атрибутов, проверяет связь с продуктами и удаляет пустые варианты.

function wp24_delete_empty_product_attribute_terms() {
    $attribute_taxonomies = wc_get_attribute_taxonomies();
    foreach ( $attribute_taxonomies as $attribute ) {
        $taxonomy = wc_attribute_taxonomy_name( $attribute->attribute_name );
        $terms = get_terms( array(
            'taxonomy' => $taxonomy,
            'hide_empty' => false,
        ) );
        if ( is_wp_error( $terms ) ) {
            continue;
        }
        foreach ( $terms as $term ) {
            if ( $term->count === 0 ) {
                wp_delete_term( $term->term_id, $taxonomy );
                error_log( "Deleted empty term '{$term->name}' from taxonomy '{$taxonomy}'" );
            }
        }
    }
}
add_action( 'init', 'wp24_delete_empty_product_attribute_terms' );

Важно: после первого запуска функцию рекомендуется удалить или закомментировать, чтобы избежать повторных удалений и нагрузки на сайт.

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

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

  • Перейдите в Товары > Атрибуты и откройте список терминов каждого атрибута — пустых там больше не должно быть.
  • Проверьте наличие ошибок в error_log или системном логе сервера — там появятся записи об удалённых терминах.
  • На фронтенде сайта проверьте страницы фильтрации по атрибутам — пустых вариантов и ссылок на них не должно быть.

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

Удаление не тех терминов

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

get_terms( array(
    'taxonomy' => $taxonomy,
    'hide_empty' => true,
) );

Но этот метод исключит именно пустые. Если надо учитывать только опубликованные товары, придётся написать кастомный запрос для подсчёта.

Нагрузка на сайт при большом количестве терминов

Выполнение удаления на хук init каждый раз увеличит время загрузки страницы. Запускайте скрипт вручную или через WP-CLI, либо снимайте хук после первого выполнения.

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

  • Перед запуском скрипта сделайте полную резервную копию базы данных.
  • Запускайте код на staging-сервере или в безопасное время с низкой нагрузкой.
  • Для регулярной очистки используйте WP-CLI с командой, которая запускает функцию, или создайте кастомную WP-CLI команду.
  • Для больших магазинов с тысячами терминов оптимизируйте код, проверяя удаление пакетами, чтобы избежать превышения лимитов памяти.

Сравнение вариантов очистки пустых терминов

МетодПлюсыМинусы
Удаление вручную через админкуПростой, не требует кодаТрудоёмко при большом количестве, риск пропустить
Автоматический PHP-скриптБыстрое массовое удаление, можно автоматизироватьРиск удаления нужных терминов, нагрузка при неправильном запуске
WP-CLI командаЭффективно для больших сайтов, без нагрузки на фронтендТребует доступа к командной строке
Как использовать хук woocommerce_order_status_changed для автоматизации обработки заказов в WooCommerce
08.06.2026
Как удалить загрузку шаблонов Gutenberg в WordPress для оптимизации сайта
25.03.2026
Как избежать проблем с настройкой статусов заказов в WooCommerce
21.05.2026
Как отключить автоматические обновления в WordPress: практические решения и примеры кода
14.02.2026
Как использовать хук woocommerce_checkout_update_order_review в WooCommerce
21.05.2026