IndexNow оптимизация отправки URL в WooCommerce

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

Почему важна оптимизация отправки URL в WooCommerce с IndexNow

Интернет-магазины часто имеют сотни или тысячи товаров, а также множество категорий, тегов и атрибутов. Если отправлять каждый URL при каждом изменении, можно быстро превысить лимиты IndexNow, что приведет к блокировке или замедлению индексации.

Оптимизация позволяет:

  • Минимизировать количество запросов к API IndexNow;
  • Отправлять только действительно важные изменения;
  • Избежать дублирования и конфликтов в индексации;
  • Ускорить появление новых продуктов и обновлений в поисковой выдаче.

Какие URL отправлять из WooCommerce в IndexNow

Основные URL, которые стоит отправлять:

  • Страницы товаров — при создании, обновлении цены, изменении наличия;
  • Страницы категорий — при добавлении/удалении товаров или изменении описания;
  • Страницы тегов и атрибутов — если они активно используются;
  • Страницы фильтров, если они индексируются поисковиками;
  • Удаление URL при удалении товаров или изменении их статуса на «черновик» или «приватный».

Ненужно отправлять URL страниц корзины, оформления заказа или аккаунта, так как они не индексируются.

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

Рассмотрим пример, как реализовать оптимизированную отправку URL в IndexNow при изменении товаров и категорий с контролем частоты отправки.

Основные шаги:

  1. Отслеживать события изменения товаров и категорий;
  2. Кэшировать изменённые URL в базе или transient для групповой отправки;
  3. Отправлять URL пакетами раз в 15 минут через Cron;
  4. Удалять из кеша URL после успешной отправки;
  5. Обрабатывать удаление товаров и отправлять удаление URL.

Пример кода для добавления в functions.php или в свой плагин

function indexnow_su_enqueue_changed_url($url) {
    $urls = get_option('indexnow_su_pending_urls', []);
    if (!in_array($url, $urls)) {
        $urls[] = $url;
        update_option('indexnow_su_pending_urls', $urls);
    }
}

// Отслеживаем обновление товара
add_action('save_post_product', function($post_id) {
    if (wp_is_post_revision($post_id) || get_post_status($post_id) !== 'publish') return;
    $url = get_permalink($post_id);
    indexnow_su_enqueue_changed_url($url);
});

// Отслеживаем изменение категории товара
add_action('edited_product_cat', function($term_id) {
    $url = get_term_link($term_id, 'product_cat');
    if (!is_wp_error($url)) {
        indexnow_su_enqueue_changed_url($url);
    }
});

// Cron для отправки URL раз в 15 минут
add_action('indexnow_su_cron_send_urls', function() {
    $urls = get_option('indexnow_su_pending_urls', []);
    if (empty($urls)) return;

    $api_key = 'ваш_ключ_indexnow';
    $endpoint = 'https://api.indexnow.org/indexnow';

    $batch = array_slice($urls, 0, 1000); // отправляем пачками по 1000

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

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

    if (!is_wp_error($response) && wp_remote_retrieve_response_code($response) === 200) {
        // Успешно отправлено, удаляем из очереди
        $remaining = array_diff($urls, $batch);
        update_option('indexnow_su_pending_urls', $remaining);
    }
});

// Планируем событие Cron при активации
register_activation_hook(__FILE__, function() {
    if (!wp_next_scheduled('indexnow_su_cron_send_urls')) {
        wp_schedule_event(time(), 'fifteen_minutes', 'indexnow_su_cron_send_urls');
    }
});

// Удаляем Cron при деактивации
register_deactivation_hook(__FILE__, function() {
    wp_clear_scheduled_hook('indexnow_su_cron_send_urls');
});

// Добавляем интервал 15 минут
add_filter('cron_schedules', function($schedules) {
    $schedules['fifteen_minutes'] = [
        'interval' => 900,
        'display' => __('Every 15 Minutes')
    ];
    return $schedules;
});

Дополнительные советы по оптимизации

Фильтрация важных изменений

Не все изменения требуют отправки URL. Например, изменение метаданных SEO или незначительные правки можно не отправлять мгновенно, а группировать и отправлять раз в сутки.

Можно расширить код, добавив проверку, какие поля изменились, и отправлять URL только при изменении цены, наличия, описания товара.

Использование специализированных плагинов

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

Также можно рассмотреть создание собственного плагина, использующего REST API WordPress и IndexNow, чтобы гибко фильтровать и контролировать отправку.

Как контролировать и отлаживать отправку URL в WooCommerce с IndexNow

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

Добавьте простой логгер, например:

function indexnow_su_log($message) {
    if (defined('WP_DEBUG') && WP_DEBUG) {
        error_log('[IndexNowSU] ' . $message);
    }
}

И вызывайте indexnow_su_log() в местах отправки и получения ответа.

Также проверяйте статус ответа API, чтобы повторять попытки при ошибках.

Итог

Оптимизация отправки URL WooCommerce в IndexNow позволяет значительно ускорить индексацию и повысить релевантность позиций в поиске. Ключевыми моментами являются:

  • Отслеживание только важных изменений;
  • Группировка URL и пакетная отправка с использованием Cron;
  • Обработка удаления и обновления URL;
  • Логирование и мониторинг состояния отправки.

Применение предложенного решения поможет избежать проблем с лимитами IndexNow и обеспечит быстрый рост видимости вашего магазина в поисковых системах.

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

⭐⭐⭐⭐⭐
Как добавить IndexNow в WordPress без плагинов: ручная интеграция и примеры кода
29.11.2025
IndexNow и оптимизация индексации изображений в WordPress
02.01.2026
Решение проблем с отправкой URL в IndexNow при большом объеме сайта WordPress
20.01.2026
IndexNow: как автоматически отправлять URL при импорте контента в WordPress
08.04.2026
Как отправлять изменения в IndexNow при использовании WP REST API в WordPress
11.04.2026
×
WPShop
честная партнерка!

Зарабатывай до 3225₽ с каждой продажи

Подключиться к партнерке