IndexNow и WooCommerce: автоматическое удаление товаров с отсутствием в наличии

Проблема: устаревшие товары с нулевым остатком остаются в индексе поисковых систем

В магазинах на WooCommerce часто возникает ситуация, когда товары временно или навсегда оказываются без наличия — количество на складе равно 0 или товар снят с продажи. При этом URL таких товаров продолжают оставаться в индексе поисковиков, что ведет к ухудшению SEO, снижению CTR и появлению 404 или редиректов при попытках перехода.

Задача — автоматически отправлять в IndexNow удаление URL с отсутствующими товарами, чтобы поисковики оперативно исключали их из индекса.

Диагностика проблемы с индексацией отсутствующих товаров

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

  • В поисковиках по запросу site:вашдомен.ru найдите URL товаров, которых физически нет на складе.
  • Просмотрите логи сервера и Google Search Console (или Bing Webmaster Tools) — ошибки 404 или редиректы на такие URL.
  • Настройте плагин для анализа SEO, например, Clearfy Pro, чтобы выявить устаревшие URL.

Как реализовать автоматическую отправку удаления URL отсутствующих товаров в IndexNow

1. Отслеживаем изменение наличия товара

Лучше всего использовать хук WooCommerce woocommerce_update_product, который вызывается при обновлении данных товара, и проверять наличие.

add_action('woocommerce_update_product', 'send_indexnow_delete_for_out_of_stock', 10, 1);

function send_indexnow_delete_for_out_of_stock($product_id) {
    $product = wc_get_product($product_id);
    if (!$product) {
        return;
    }
    if ($product->get_stock_quantity() === 0 || !$product->is_in_stock()) {
        send_indexnow_url_delete(get_permalink($product_id));
    }
}

2. Функция отправки удаления URL в IndexNow

Ниже пример базовой реализации отправки с использованием curl. Замените YOUR_API_KEY и YOUR_INDEXNOW_ENDPOINT на свои данные.

function send_indexnow_url_delete($url) {
    $api_key = 'YOUR_API_KEY';
    $endpoint = 'https://api.indexnow.org/indexnow';

    $payload = [
        'host' => parse_url(home_url(), PHP_URL_HOST),
        'key' => $api_key,
        'urlList' => [$url],
        'action' => 'delete'
    ];

    $ch = curl_init($endpoint);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($http_code === 200) {
        error_log('IndexNow: Успешно отправлено удаление URL: ' . $url);
    } else {
        error_log('IndexNow: Ошибка отправки удаления URL: ' . $url . ' Ответ: ' . $response);
    }
}

3. Оптимизация отправки при массовом обновлении

При обновлении большого количества товаров не стоит отправлять запросы на каждый товар сразу. Рекомендуется накапливать URL в очередь и отправлять пакетами (до 1000 URL за один запрос), используя WP Cron для периодической отправки.

function queue_indexnow_delete_url($url) {
    $queue = get_option('indexnow_delete_queue', []);
    if (!in_array($url, $queue, true)) {
        $queue[] = $url;
        update_option('indexnow_delete_queue', $queue);
    }
}

function send_indexnow_queue() {
    $queue = get_option('indexnow_delete_queue', []);
    if (empty($queue)) {
        return;
    }
    $batch = array_splice($queue, 0, 1000);
    update_option('indexnow_delete_queue', $queue);

    // Отправка batch в IndexNow с action delete (аналогично функции выше)
    // ...
}

add_action('indexnow_cron_send_delete', 'send_indexnow_queue');

// Запланировать Cron при активации плагина или темы
if (!wp_next_scheduled('indexnow_cron_send_delete')) {
    wp_schedule_event(time(), 'hourly', 'indexnow_cron_send_delete');
}

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

  • В логах сервера (error_log) появятся записи об успешной отправке удаления URL.
  • В Bing Webmaster Tools и других консолях следите за статусом удаленных URL — они должны исчезать из индекса за несколько дней.
  • Проверьте, что URL отсутствующих товаров возвращают 404 или корректно редиректятся, чтобы не было конфликтов.

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

  • Отправка URL без правильного формата. URL должен быть абсолютным и совпадать с реальным адресом товара. Используйте get_permalink().
  • Отсутствие проверки наличия товара. Если отправлять удаление для товара, который на самом деле в наличии, это приведет к неправильной индексации.
  • Перегрузка запросами IndexNow. При массовом обновлении без пакетной отправки сервер может блокировать запросы. Используйте очередь и WP Cron.
  • Неправильный ключ API или endpoint. Проверьте актуальность ключа и URL сервиса IndexNow.
  • Проблемы с кэшированием. Если кэш не очищается после обновления товара, поисковики будут видеть устаревшую версию. Настройте очистку кэша при изменении товара.

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

  • Храните ключ API в wp-config.php или в защищенной опции, не в открытом коде.
  • Ограничьте частоту отправки запросов, чтобы не превышать лимиты IndexNow и не нагружать сервер.
  • Используйте асинхронные запросы или WP Cron для пакетной отправки, чтобы не блокировать пользовательские запросы.
  • При большом каталоге товаров рассмотрите использование специализированных плагинов, например Clearfy Pro, которые могут интегрироваться с IndexNow и оптимизировать отправку.

Сравнение вариантов реализации автоматического удаления товаров в IndexNow

МетодПлюсыМинусыКогда выбирать
Прямой вызов отправки при обновлении товараПростая реализация, мгновенная реакцияВысокая нагрузка при массовых изменениях, риск превышения лимитовМаленькие магазины с редкими обновлениями
Отправка через очередь и WP CronОптимизация нагрузки, пакетная отправка до 1000 URLЗадержки до часа, сложнее реализацияБольшие магазины с частыми обновлениями
Использование готовых плагинов (например, Clearfy Pro)Готовое решение, поддержка и обновленияПлатные, ограничены функционалом плагинаКому нужно быстро и без собственного кода

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

⭐⭐⭐⭐⭐
IndexNow и WooCommerce: автоматическое удаление товаров с отсутствием в наличии
22.07.2026
Как правильно настроить ограничение частоты запросов IndexNow в WordPress
17.03.2026
IndexNow и robots.txt для автоматической блокировки ненужных URL в WordPress
06.03.2026
IndexNow и WooCommerce: автоматическая отправка URL при изменениях остатков товаров
01.06.2026
IndexNow автоматическое отправление изменений в WordPress: практическое руководство
11.12.2025
×

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

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

пишет статьи

готовит SEO

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

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