IndexNow и WooCommerce: оптимальная автоматизация отправки SKU и вариантов товаров

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

В интернет-магазинах на WooCommerce часто возникает ситуация, когда поисковые системы не индексируют все варианты товаров (например, разные цвета, размеры) или их SKU. Причины могут быть следующими:

  • Отсутствие отправки URL вариантов товаров в IndexNow;
  • Использование AJAX для загрузки вариаций без обновления URL;
  • Неправильная конфигурация канонических URL, которые указывают на основной товар, игнорируя вариации;
  • Большое количество вариаций приводит к превышению лимита отправляемых URL;
  • Отсутствие автоматизации при изменении статуса товара или вариаций.

Чтобы исправить эти проблемы, необходимо настроить грамотную интеграцию WooCommerce с IndexNow, учитывающую особенности SKU и вариаций.

Пошаговое решение: автоматическая отправка URL SKU и вариантов в IndexNow

1. Формируем список URL вариаций и SKU

В WooCommerce вариации — это дочерние продукты типа product_variation. Для каждой вариации нужно получить URL и SKU. Пример кода для сбора URL всех опубликованных вариаций:

function get_all_variation_urls() {
    $args = [
        'post_type' => 'product_variation',
        'post_status' => 'publish',
        'numberposts' => -1
    ];
    $variations = get_posts($args);
    $urls = [];
    foreach ($variations as $variation) {
        $variation_obj = wc_get_product($variation->ID);
        if ($variation_obj) {
            $urls[] = $variation_obj->get_permalink();
        }
    }
    return $urls;
}

2. Автоматическая отправка URL при изменении вариации

Используем хук save_post_product_variation, чтобы отправлять URL в IndexNow сразу после обновления вариации:

add_action('save_post_product_variation', 'send_variation_url_to_indexnow', 10, 3);
function send_variation_url_to_indexnow($post_id, $post, $update) {
    if ($post->post_status !== 'publish') {
        return; // Отправляем только опубликованные вариации
    }
    $product = wc_get_product($post_id);
    if (!$product) {
        return;
    }
    $url = $product->get_permalink();
    // Функция отправки в IndexNow
    indexnow_send_url($url);
}

function indexnow_send_url($url) {
    $key = 'ВАШ_КЛЮЧ_INDEXNOW';
    $endpoint = 'https://api.indexnow.org/indexnow?url=' . urlencode($url) . '&key=' . $key;
    $response = wp_remote_get($endpoint);
    // Логируем ответ для отладки
    if (is_wp_error($response)) {
        error_log('IndexNow error: ' . $response->get_error_message());
    } else {
        error_log('IndexNow response: ' . wp_remote_retrieve_body($response));
    }
}

3. Пакетная отправка URL для большого каталога

При большом количестве вариаций отправлять URL по одному не эффективно. Используйте пакетную отправку (до 1000 URL за запрос):

function indexnow_send_urls_batch(array $urls) {
    $key = 'ВАШ_КЛЮЧ_INDEXNOW';
    $endpoint = 'https://api.indexnow.org/indexnow';
    $body = [
        'host' => parse_url(home_url(), PHP_URL_HOST),
        'key' => $key,
        'keyLocation' => home_url('/' . $key . '.txt'),
        'urlList' => $urls
    ];
    $response = wp_remote_post($endpoint, [
        'headers' => ['Content-Type' => 'application/json'],
        'body' => wp_json_encode($body),
        'timeout' => 10
    ]);
    if (is_wp_error($response)) {
        error_log('IndexNow batch error: ' . $response->get_error_message());
    } else {
        error_log('IndexNow batch response: ' . wp_remote_retrieve_body($response));
    }
}

Проверка результата: как убедиться, что SKU и варианты отправляются правильно

  • Проверьте логи ошибок сервера или wp_debug.log — там должны быть записи с ответом от IndexNow;
  • Отправьте ручной запрос с URL вариации и проверьте ответ сервиса IndexNow (HTTP 200 – успех);
  • Используйте инструменты поисковых систем для проверки индексации вариантов (например, Bing Webmaster Tools);
  • Убедитесь, что на сайте доступны уникальные URL для каждой вариации, а канонические ссылки не блокируют их индексирование;
  • Проверьте, что редиректы на уровне сервера и плагинов не мешают доступу к вариациям.

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

  • Отправка URL без проверки статуса публикации вариации. Решение: фильтруйте вариации по статусу publish, чтобы не отправлять неактивные страницы.
  • Неверный ключ IndexNow или отсутствие файла ключа на сайте. Проверьте, что ключ соответствует заданному и размещён по адресу https://ваш-сайт/ключ.txt.
  • Переотправка большого количества URL без лимита. Используйте пакетную отправку и лимитируйте частоту запросов, чтобы не получить бан от IndexNow.
  • Канонические URL указывают на главный товар, а не на вариации. Настройте правильные канонические ссылки для вариаций, если хотите их индексировать.
  • Проблемы с кэшированием. После отправки URL очищайте кэш страниц с вариациями, чтобы поисковики видели актуальный контент.

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

  • Храните ключ IndexNow вне публичных директорий, используйте константы в wp-config.php или защищённые опции.
  • Ограничьте количество запросов к API IndexNow: рекомендуют не более 10 000 URL в сутки и пакетами до 1000 URL.
  • Используйте транзиенты или опции для кеширования списка URL вариаций, чтобы не делать дорогостоящие запросы к базе при каждом сохранении.
  • Для больших магазинов с десятками тысяч вариаций используйте WP-Cron или внешние планировщики для пакетной отправки URL с интервалом в несколько минут.
  • Обратите внимание на правильное управление редиректами: постоянные 301 редиректы должны сопровождаться удалением старых URL из индекса через IndexNow.

Сравнение подходов к отправке URL вариаций в IndexNow

МетодПреимуществаНедостаткиРекомендации
Отправка URL при сохранении вариации (по одному)Простая реализация и мгновенная отправкаБольшая нагрузка при массовых изменениях, риск превышения лимитовИспользовать для небольших магазинов или единичных обновлений
Пакетная отправка по расписанию (WP-Cron)Оптимальная нагрузка, контроль лимитов, подходит для больших магазиновСложнее в реализации, задержка между изменением и отправкойРекомендуется для магазинов с большим каталогом
Ручная отправка через админку или CLIПолный контроль, возможность выборочной отправкиТребует участия администратора, не автоматизированоИспользовать для отладки и единичных случаев

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

⭐⭐⭐⭐⭐
IndexNow и WooCommerce: оптимальная очередь и пакетная обработка URL
04.06.2026
Отладка отправки URL в IndexNow для WordPress: практические советы и примеры
29.12.2025
Оптимизация базы данных WordPress и ускорение запросов: практические советы
11.11.2025
IndexNow и WooCommerce: автоматическое удаление товаров с отсутствием в наличии
09.05.2026
Как отправлять изменения в IndexNow при использовании WP REST API в WordPress
11.04.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее