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

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

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

Как проверить, есть ли у товаров изображения

Используйте следующий SQL-запрос, чтобы найти товары без миниатюр (featured images):

SELECT p.ID, p.post_title FROM wp_posts p
LEFT JOIN wp_postmeta pm ON pm.post_id = p.ID AND pm.meta_key = '_thumbnail_id'
WHERE p.post_type = 'product' AND pm.meta_value IS NULL AND p.post_status = 'publish';

Если запрос возвращает результаты, значит есть опубликованные товары без изображений.

Пошаговое решение: автоматическое удаление товаров без изображений через WP-Cron

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

1. Создание функции удаления товаров без изображений

function wpteam_delete_products_without_images() {
    $args = [
        'post_type'      => 'product',
        'posts_per_page' => -1,
        'post_status'    => 'publish',
        'meta_query'     => [
            [
                'key'     => '_thumbnail_id',
                'compare' => 'NOT EXISTS',
            ],
        ],
        'fields' => 'ids',
    ];

    $query = new WP_Query( $args );

    if ( ! empty( $query->posts ) ) {
        foreach ( $query->posts as $product_id ) {
            wp_delete_post( $product_id, true ); // true — без перемещения в корзину
        }
    }
}

2. Регистрация WP-Cron задачи для регулярного запуска

add_action( 'wpteam_daily_delete_products', 'wpteam_delete_products_without_images' );

function wpteam_schedule_daily_delete() {
    if ( ! wp_next_scheduled( 'wpteam_daily_delete_products' ) ) {
        wp_schedule_event( time(), 'daily', 'wpteam_daily_delete_products' );
    }
}
add_action( 'wp', 'wpteam_schedule_daily_delete' );

3. Как запустить сразу без ожидания cron

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

wp eval 'wpteam_delete_products_without_images();'

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

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

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

  • Ошибка: Товары не удаляются, хотя есть без изображений.
    Причина: WP-Cron не запускается из-за низкой посещаемости сайта или отключённого cron.
    Решение: Используйте системный cron или плагин WP Crontrol для ручного запуска.
  • Ошибка: Удаляются товары с изображениями.
    Причина: Некорректный meta_query или неправильный ключ meta_key.
    Решение: Проверьте, что meta_key точно _thumbnail_id и сравнение 'NOT EXISTS'.
  • Ошибка: Удалённые товары появляются снова.
    Причина: Кэширование базы или плагин восстановления.
    Решение: Очистите кэш и проверьте настройки плагинов резервного копирования/восстановления.

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

  • Удаляйте товары с параметром $force_delete = true только если уверены, что они не нужны — это удаляет без перемещения в корзину.
  • Для больших магазинов используйте постраничный запрос (posts_per_page с пагинацией), чтобы избежать превышения лимита памяти.
  • Перед массовым удалением создайте резервную копию базы данных.
  • Используйте плагин Clearfy Pro для оптимизации WooCommerce и контроля повторяющихся записей.

Сравнение подходов удаления товаров без изображений

МетодПлюсыМинусы
SQL-запросБыстро, без нагрузки на WPРиск ошибок, вручную, не автоматизировано
PHP+WP-Cron (код)Автоматизация, интеграция с WPНужна настройка cron, нагрузка при больших данных
Плагины для очисткиУдобно, интерфейсМожет быть платным, лишние зависимости
Как отключить дубли архивов, тегов и авторов в WordPress без поломки индексации
19.08.2026
Как закрыть тонкие страницы поисковых фильтров в WordPress без потери полезной индексации
22.08.2026
Как закрыть XML-RPC в WordPress без поломки сайта и лишних рисков
25.08.2026

Возникли задачи по WP? Вы можете задать свой вопрос на FAQwp.com Либо обратиться к специалистам поддержки.