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

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

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

Как определить, какие вариации считать старыми

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

  • Вариации, не продававшиеся и не обновлявшиеся более 3 месяцев;
  • Вариации, помеченные меткой или пользовательским полем (custom field) «устаревшая»;
  • Вариации, не имеющие запасов на складе и не заказанные за последний год.

В зависимости от бизнес-логики выберите подходящий критерий.

Пошаговое решение: скрипт для удаления старых вариаций

Рассмотрим пример, как автоматически удалять вариации, не обновлявшиеся более 90 дней. Для этого создадим кастомную функцию и запустим её через WP-Cron.

1. Функция удаления вариаций

function wpb_delete_old_variations() {
    global $wpdb;
    $days = 90;
    $date_threshold = date('Y-m-d H:i:s', strtotime("-{$days} days"));

    // Получаем ID вариаций, дата изменения которых меньше пороговой
    $variation_ids = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM {$wpdb->posts} 
         WHERE post_type = 'product_variation' 
         AND post_modified < %s",
        $date_threshold
    ));

    if (!empty($variation_ids)) {
        foreach ($variation_ids as $vid) {
            wp_delete_post($vid, true); // Насильственное удаление без перемещения в корзину
        }
    }
}

2. Планирование задачи с WP-Cron

if (!wp_next_scheduled('wpb_daily_variation_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wpb_daily_variation_cleanup');
}
add_action('wpb_daily_variation_cleanup', 'wpb_delete_old_variations');

Этот код запускает функцию очистки каждый день, удаляя вариации старше 90 дней.

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

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

  • В админке WooCommerce проверьте список вариаций — старые должны исчезнуть.
  • В таблице wp_posts в базе данных SQL-запросом SELECT ID, post_title, post_type, post_modified FROM wp_posts WHERE post_type = 'product_variation' ORDER BY post_modified DESC LIMIT 10; проверьте даты последних вариаций.
  • Включите логирование в WordPress и добавьте error_log() в функцию удаления для отслеживания удаляемых ID.

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

  • Удаляются не те вариации: Проверьте правильность даты и критериев выборки. Используйте post_modified, а не post_date.
  • Скрипт не запускается автоматически: Убедитесь, что WP-Cron работает. Для этого вызовите wp-cron.php вручную или настройте системный cron.
  • Потеря данных: Всегда тестируйте на копии сайта и делайте резервные копии базы перед массовыми удалениями.
  • Высокая нагрузка при удалении: Разбейте удаление на пакеты по 50-100 вариаций, чтобы избежать таймаутов.

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

  • Добавьте проверку прав пользователя, если планируете запускать функцию вручную через админку.
  • Ограничьте количество удаляемых вариаций за один запуск, например, добавьте LIMIT 100 к запросу и используйте повторный запуск для полного удаления.
  • Для больших магазинов используйте WP-CLI для пакетного удаления, чтобы избежать ограничений PHP и HTTP.
  • Логируйте удалённые ID в отдельный лог-файл для аудита.

Сравнение методов удаления старых вариаций

МетодПлюсыМинусы
Ручное удаление в админкеПросто, не требует кодаТрудоемко при большом количестве вариаций
Скрипт с WP-Cron (код)Автоматизация, гибкость, нет плагиновТребуется написание и тестирование кода
Плагины очистки WooCommerceУдобный интерфейс, поддержкаНагрузка, возможные конфликты, лицензии

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как избежать проблем с разрешениями при загрузке медиафайлов в WordPress
16.06.2026
Как изменить метод отправки писем в WordPress: настройка SMTP и альтернативные решения
07.04.2026
Как удалить предзапланированные задачи в WP-Cron и избежать проблем с кэшированием
25.04.2026
Как создать собственный шорткод в WordPress: практическое руководство
09.11.2025
Как сделать автоматический импорт постов из JSON в WordPress
01.01.2026
×

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

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

пишет статьи

готовит SEO

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

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