Автоматическое удаление товаров в WooCommerce по дате публикации

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

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

Как проверить, что товар можно удалять по дате

Для начала убедитесь, что в вашем магазине у товаров корректно проставлена дата публикации (post_date) и она отражает момент появления товара в каталоге. Также проверьте, что товары, которые нужно удалять, не используются в заказах или других важных данных (например, для отчетности).

Для проверки списка товаров по дате используйте WP-CLI или SQL запрос:

SELECT ID, post_title, post_date FROM wp_posts WHERE post_type = 'product' AND post_status = 'publish' ORDER BY post_date ASC LIMIT 10;

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

1. Добавление WP-Cron задачи для регулярной проверки

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

if ( ! wp_next_scheduled( 'wc_delete_old_products_daily' ) ) {
    wp_schedule_event( time(), 'daily', 'wc_delete_old_products_daily' );
}

add_action( 'wc_delete_old_products_daily', 'wc_delete_old_products_older_than_90_days' );

function wc_delete_old_products_older_than_90_days() {
    global $wpdb;
    $threshold_date = date( 'Y-m-d H:i:s', strtotime( '-90 days' ) );

    // Получаем ID товаров старше 90 дней
    $old_products = $wpdb->get_col( $wpdb->prepare(
        "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'product' AND post_status = 'publish' AND post_date < %s",
        $threshold_date
    ) );

    if ( ! empty( $old_products ) ) {
        foreach ( $old_products as $product_id ) {
            // Безопасное удаление с проверкой
            wp_delete_post( $product_id, true );
        }
    }
}

2. Настройка периода удаления и безопасности

В данном примере товары старше 90 дней удаляются безвозвратно (wp_delete_post с параметром true). Если хотите сначала переносить в корзину, замените true на false.

Если нужно другой период, измените значение -90 days на нужное (например, -180 days).

3. Запуск задачи вручную для тестирования

Для проверки работы функции без ожидания cron-запуска, вызовите функцию напрямую в файле или через консоль WP-CLI:

wp eval 'wc_delete_old_products_older_than_90_days();'

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

  • Проверьте, что в админке WooCommerce исчезли товары, дата публикации которых старше установленного порога.
  • Выполните SQL-запрос по аналогии с предыдущим для подтверждения удаления.
  • Просмотрите логи cron (если настроены) или используйте плагин WP Crontrol для контроля выполнения задачи.

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

  • Товары не удаляются: проверьте, активна ли WP-Cron, нет ли конфликтов с другими плагинами, и не отключен ли wp_schedule_event.
  • Удаление происходит слишком рано или поздно: проверьте корректность даты в базе и параметр strtotime в функции.
  • Удаляются нужные товары: убедитесь, что условие выборки не слишком общее. Добавьте дополнительные фильтры, например, по категории или метаданным.
  • Потеря данных о заказах: товары с историей заказов лучше не удалять. Можно добавить проверку наличия связанных заказов перед удалением.

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

  • Перед массовым удалением создавайте резервную копию базы.
  • Для больших магазинов используйте постраничную обработку, чтобы избежать таймаутов.
  • Добавьте логирование удалённых товаров для аудита и отката.
  • Если WP-Cron ненадежен, настройте системный cron на сервере для запуска wp-cron.php.

Сравнение способов автоматического удаления товаров

МетодПлюсыМинусы
WP-Cron с кастомным кодомГибкость, полная кастомизация, бесплатныйЗависит от посещаемости сайта, требует навыков программирования
Плагины автоматизации (например, WP All Import с триггерами)Удобный интерфейс, поддержка импорта/удаленияПлатные решения, возможны ограничения по функционалу
Ручное удаление через админкуПростота, не требует кодаНебольшая автоматизация, риск ошибок при больших объемах
Автоматическое создание резервной копии WordPress: лучшие плагины и кодовые решения
18.11.2025
Как добавить свое шорткод в WordPress: подробное руководство
15.11.2025
Как удалить загруженные файлы из медиатеки WordPress полностью
02.12.2025
Как использовать WP Cron в WordPress для автоматизации задач
27.03.2026
Как установить и настроить WPGPT в WordPress для автописания контента
21.02.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше