IndexNow и WooCommerce: автоматизация отправки URL при массовых изменениях наличия товаров

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

В WooCommerce при изменении статуса наличия большого количества товаров часто возникает задержка в обновлении индекса поисковых систем. Это связано с тем, что стандартные методы отправки URL в IndexNow запускаются индивидуально и не учитывают массовые операции. В итоге поисковики продолжают показывать устаревшую информацию о наличии товаров, что негативно сказывается на конверсии и пользовательском опыте.

Проверить проблему можно следующим образом:

  • Измените наличие сразу у нескольких товаров через админку WooCommerce или с помощью импорта.
  • Отследите логи запросов к IndexNow (если ведется логирование) или используйте сетевой монитор в браузере для отслеживания отправки URL.
  • Проверьте через инструменты поисковых систем актуальность индексации страниц товаров с обновленным наличием.

Пошаговое решение: реализация пакетной отправки URL в IndexNow при массовом обновлении товаров

1. Перехват массового обновления наличия товаров

WooCommerce не предоставляет стандартного хука для массового изменения наличия, но можно использовать woocommerce_product_set_stock для отслеживания изменения остатков каждого товара. Чтобы минимизировать нагрузку, собираем URL товаров в пакет и отправляем по таймеру.

add_action('woocommerce_product_set_stock', 'indexnow_collect_product_url_for_batch', 10, 1);

function indexnow_collect_product_url_for_batch($product) {
    $url = get_permalink($product->get_id());
    $batch = get_option('indexnow_url_batch', []);
    if (!in_array($url, $batch)) {
        $batch[] = $url;
        update_option('indexnow_url_batch', $batch);
    }
}

2. Создание Cron задачи для отправки URL партиями

Чтобы избежать превышения лимитов IndexNow и не перегружать сервер, отправляем URL из накопленного списка порциями по 10 штук каждые 5 минут.

if (!wp_next_scheduled('indexnow_send_url_batch')) {
    wp_schedule_event(time(), 'five_minutes', 'indexnow_send_url_batch');
}

add_action('indexnow_send_url_batch', 'indexnow_send_batch_urls');

function indexnow_send_batch_urls() {
    $batch = get_option('indexnow_url_batch', []);
    if (empty($batch)) {
        return;
    }
    $chunk = array_splice($batch, 0, 10);

    $endpoint = 'https://api.indexnow.org/indexnow';
    $api_key = 'ваш_ключ_из_IndexNow'; // Замените на ваш ключ

    $payload = [
        'host' => home_url(),
        'key' => $api_key,
        'keyLocation' => home_url('/' . $api_key . '.txt'),
        'urlList' => $chunk
    ];

    $response = wp_remote_post($endpoint, [
        'headers' => ['Content-Type' => 'application/json'],
        'body' => json_encode($payload),
        'timeout' => 15
    ]);

    if (!is_wp_error($response) && wp_remote_retrieve_response_code($response) === 200) {
        update_option('indexnow_url_batch', $batch); // очистить отправленные URL
    } else {
        // При ошибке можно логировать или попытаться повторить позже
    }
}

3. Регистрация интервала Cron 5 минут

add_filter('cron_schedules', 'indexnow_add_five_minutes_cron');
function indexnow_add_five_minutes_cron($schedules) {
    $schedules['five_minutes'] = [
        'interval' => 300,
        'display'  => __('Каждые 5 минут')
    ];
    return $schedules;
}

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

  • Отредактируйте наличие нескольких товаров в WooCommerce одновременно.
  • Подождите 5–10 минут, чтобы сработал Cron.
  • Проверьте логи сервера или включите временную запись в лог отправки в функцию indexnow_send_batch_urls для подтверждения успешной отправки URL.
  • Воспользуйтесь инструментами для вебмастеров (например, Яндекс Вебмастер или Bing Webmaster) для проверки статуса последних отправленных URL.
  • Проверьте, что страницы с обновленным наличием отображаются корректно в поиске через несколько часов.

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

  • Отсутствие ключа API или неправильный ключ: проверьте, что ключ правильно прописан в коде и файл {ключ}.txt размещен в корне сайта.
  • Ошибки при отправке из-за превышения лимита URL: используйте пакетную отправку по 10-20 URL и интервал не менее 5 минут.
  • Повторяющиеся URL в пакете: фильтруйте дубликаты при сборе URL в опцию.
  • Cron не срабатывает: проверьте, активен ли WP Cron или настройте реальный системный cron для wp-cron.php.
  • URL не отправляются из-за кеширования: отключите кеширование страницы с ключом .txt, добавьте исключение в плагинах кеша.

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

  • Храните ключ API IndexNow в wp-config.php или используйте константу вместо хардкода в плагине для безопасности:
define('INDEXNOW_API_KEY', 'ваш_ключ_из_IndexNow');

// В коде:
$api_key = defined('INDEXNOW_API_KEY') ? INDEXNOW_API_KEY : '';
  • Ограничьте размер пакета до 10 URL, чтобы не перегружать сервер и не блокировать индексацию.
  • Добавьте логирование ошибок отправки в отдельный файл с ротацией, чтобы отслеживать сбои.
  • Используйте транзиенты WordPress для временного хранения URL, если обновления происходят слишком часто.
  • Минимизируйте количество вызовов update_option — собирайте URL в массив и обновляйте опцию раз в несколько минут.

Сравнение вариантов реализации отправки URL в IndexNow для массовых изменений WooCommerce

МетодПлюсыМинусыКомпромисс
Отправка URL сразу при изменении продуктаПростая реализация
Мгновенное обновление
Высокая нагрузка при массовых изменениях
Риск блокировки API
Подходит для сайтов с низкой частотой изменений
Пакетная отправка через Cron (описано выше)Оптимизация нагрузки
Управляемый трафик к IndexNow
Задержка в обновлении индекса
Сложнее в отладке
Лучший баланс для крупных магазинов
Отправка через очередь сообщений (RabbitMQ, Redis)Высокая масштабируемость
Гибкость управления
Сложная инфраструктура
Требует навыков DevOps
Подходит для очень больших проектов

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

⭐⭐⭐⭐⭐
Изменение URL в WordPress без потери индексации и позиций
08.12.2025
Как автоматизировать управление каноническими URL в WordPress с IndexNow
31.01.2026
IndexNow: как автоматически удалять слуги с постоянным редиректом в WordPress и обновлять индекс
14.04.2026
Как автоматически удалять слуги с постоянным редиректом в WordPress и обновлять индекс с помощью IndexNow
26.03.2026
IndexNow и автоматизация отправки URL в WordPress с помощью Cron и REST API
27.02.2026
×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙