Автоматическое удаление неиспользуемых купонов в WooCommerce

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

В интернет-магазинах на WooCommerce часто копятся купоны, которые не были использованы ни разу. Они занимают место в базе данных, усложняют управление скидками и могут вводить в заблуждение администраторов магазина. Регулярное удаление таких купонов повышает производительность и упрощает поддержание актуальной базы скидок.

Определение «неиспользуемых» купонов

Неиспользуемыми считаются купоны, у которых usage_count равен 0, то есть ни один заказ с ними не был оформлен. В WooCommerce эта информация хранится в метаполе купона usage_count.

Как проверить неиспользуемые купоны вручную

  • Перейдите в админку WordPress → WooCommerce → Купоны.
  • Отсортируйте купоны по количеству использований (используйте колонку «Использований»).
  • Выделите те, у которых «Использований» = 0.

Для автоматизации стоит использовать программный подход.

Пошаговое решение: как автоматически удалять неиспользуемые купоны

1. Написание функции удаления

Добавьте следующий код в functions.php вашей темы или в отдельный плагин:

function wc_delete_unused_coupons() {
    $args = array(
        'posts_per_page' => -1,
        'post_type'      => 'shop_coupon',
        'meta_key'       => 'usage_count',
        'meta_value'     => '0',
        'meta_compare'   => '=',
        'fields'         => 'ids',
    );

    $coupons = get_posts($args);

    if (!empty($coupons)) {
        foreach ($coupons as $coupon_id) {
            wp_delete_post($coupon_id, true);
        }
    }
}

2. Автоматизация через WP-Cron

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

// Регистрируем событие при активации темы или плагина
if (!wp_next_scheduled('wc_delete_unused_coupons_event')) {
    wp_schedule_event(time(), 'weekly', 'wc_delete_unused_coupons_event');
}

// Хук на событие
add_action('wc_delete_unused_coupons_event', 'wc_delete_unused_coupons');

// Очистка при деактивации (если добавлен как плагин)
function wc_cleanup_cron() {
    $timestamp = wp_next_scheduled('wc_delete_unused_coupons_event');
    wp_unschedule_event($timestamp, 'wc_delete_unused_coupons_event');
}
// register_deactivation_hook(__FILE__, 'wc_cleanup_cron'); // Используйте в плагине

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

  • Перейдите в базу данных (например, через phpMyAdmin) в таблицу wp_posts с типом shop_coupon и убедитесь, что купоны с usage_count = 0 удалены.
  • В админке WooCommerce проверьте раздел «Купоны» — неиспользуемых купонов быть не должно.
  • Для подтверждения работы крон-задачи можно временно заменить период запуска на 'hourly' и отследить удаление купонов после часа.

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

  • Купоны не удаляются. Проверьте, что крон-событие запланировано с помощью wp_next_scheduled('wc_delete_unused_coupons_event'). Если нет, зарегистрируйте событие заново.
  • Удаляются нужные купоны. Убедитесь, что условие usage_count = 0 корректно и не затрагивает купоны с использованием. Для дополнительной безопасности можно добавить проверку даты создания купона — удалять только старые купоны.
  • Функция не запускается автоматически. Возможно, на сайте не работают WP-Cron из-за отсутствия трафика или блокировок. Рекомендуется настроить системный cron для вызова wp-cron.php.

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

  • Перед удалением купонов сделайте резервную копию базы данных.
  • Добавьте логирование удалений в отдельный файл или системный лог для аудита:
    error_log("Удалён купон с ID: $coupon_id");
  • Для сайтов с большим количеством купонов используйте постраничный запрос с posts_per_page, чтобы избежать превышения лимита памяти.
  • Регулярно проверяйте логи WP-Cron и системные логи на предмет ошибок.

Сравнение способов удаления неиспользуемых купонов

МетодПлюсыМинусыПример использования
Ручное удаление Простота, контроль Трудоемко, риск пропуска купонов Админка WooCommerce → Купоны
Код с WP-Cron Автоматизация, масштабируемость Нужна настройка cron, возможны ошибки в коде Приведённый выше код
Плагины для очистки базы Удобство, дополнительные функции оптимизации Зависимость от стороннего плагина, возможные конфликты Clearfy Pro — https://wpshop.ru/plugins/clearfy?utm_source=wpcommunity.ru&utm_medium=article&utm_campaign=woocommerce-avtomaticheskoe-udaleniye-neispolzuemyh-kuponov
Как автоматизировать удаление неиспользуемых вариативов в WooCommerce
18.05.2026
Как использовать AJAX в WordPress для обновления контента без перезагрузки страницы
29.12.2025
Удаление пустых записей в termmeta WordPress: оптимизация базы данных
09.12.2025
Как создать динамические шаблоны в WordPress на основе AJAX
22.12.2025
Как избежать проблем с отказывающими товарами в WooCommerce: практическое руководство
29.07.2026

Задать вопрос о вордпресс, получить ответ - это все можно сделать в нашем сообществе WP. Сайт в данный момент в разработке, изучите ссылки ниже: