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

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

В крупных WooCommerce-магазинах часто возникает ситуация, когда товары, которых нет в наличии, продолжают индексироваться поисковыми системами. Это приводит к попаданию пользователей на неактуальные страницы, увеличению показателя отказов и снижению качества SEO. Главная причина — отсутствие автоматического обновления индекса после изменения статуса товара на «нет в наличии».

Проверить, что такие товары остались в индексе, можно через Google Search Console (раздел «Страницы») или используя API IndexNow для получения списка отправленных URL.

Автоматизация удаления URL товаров без наличия с помощью IndexNow

Настройка отслеживания статуса наличия товара

WooCommerce хранит данные о наличии товара в метаполе _stock_status с возможными значениями instock, outofstock и onbackorder. Чтобы автоматически отправлять запросы на удаление URL товаров, у которых _stock_status изменился на outofstock, используем хук save_post_product.

function indexnow_remove_outofstock_product_url( $post_id ) {
    if ( wp_is_post_revision( $post_id ) ) {
        return;
    }
    $stock_status = get_post_meta( $post_id, '_stock_status', true );
    if ( $stock_status === 'outofstock' ) {
        $url = get_permalink( $post_id );
        indexnow_send_url_removal( $url );
    }
}
add_action( 'save_post_product', 'indexnow_remove_outofstock_product_url', 20 );

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

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

function indexnow_send_url_removal( $url ) {
    $key = 'ВАШ_КЛЮЧ_INDEXNOW';
    $endpoint = 'https://api.indexnow.org/indexnow';

    $payload = [
        'host' => parse_url( home_url(), PHP_URL_HOST ),
        'key' => $key,
        'keyLocation' => home_url( 'indexnow-key.txt' ),
        'urlList' => [$url],
        'action' => 'delete'
    ];

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

    if ( is_wp_error( $response ) ) {
        error_log( 'IndexNow removal error: ' . $response->get_error_message() );
    } elseif ( wp_remote_retrieve_response_code( $response ) !== 200 ) {
        error_log( 'IndexNow removal failed: ' . wp_remote_retrieve_body( $response ) );
    }
}

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

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

  • Изменить статус одного из товаров на «нет в наличии»;
  • В логе ошибок (error_log) проверить отсутствие ошибок IndexNow;
  • Убедиться, что запрос с параметром action=delete был отправлен;
  • Отслеживать через Google Search Console или API IndexNow, что URL удаляется из индекса в течение нескольких дней.

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

  • Неправильный ключ IndexNow: убедитесь, что ключ API совпадает с ключом, размещенным в indexnow-key.txt в корне сайта.
  • Отправка запросов на добавление вместо удаления: в payload обязательно указывайте 'action' => 'delete' для удаления URL.
  • Отсутствие правильного хука: хук save_post_product срабатывает не всегда — проверяйте, что функция вызывается при изменении наличия, а не только при создании.
  • Блокировка запросов сервером: проверьте, что wp_remote_post не блокируется firewall или плагинами безопасности.

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

  • Кэширование ключа IndexNow: загрузите ключ один раз при инициализации, чтобы не делать лишних запросов к файлу indexnow-key.txt.
  • Ограничение частоты отправки: при массовом обновлении товаров лучше использовать WP Cron для пакетной отправки запросов, чтобы не создавать нагрузку на API и сервер.
  • Логирование ошибок: используйте отдельный лог-файл для ошибок IndexNow, чтобы оперативно выявлять проблемы.
  • Валидация URL: перед отправкой убедитесь, что URL корректен и соответствует домену сайта.

Сравнение способов автоматического удаления URL товаров с отсутствием в наличии

МетодПлагинКодПлюсыМинусы
Отправка сразу при смене статусаНетДа (хук save_post_product)Мгновенное обновление индексаМожет создавать нагрузку при массовом обновлении
Пакетная отправка через WP CronВозможно, есть плагиныДа (через wp_schedule_event)Снижает нагрузку, упорядочивает отправкуЗадержка между обновлениями, сложность реализации
Ручное удаление URLПлагины SEOНетПростотаТребует ручного контроля, не подходит для больших магазинов

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

⭐⭐⭐⭐⭐
Как удалить из индекса WordPress старые изображения с помощью IndexNow
14.12.2025
IndexNow и отладка отправки URL в крупных проектах WordPress: практические советы
24.02.2026
IndexNow: как автоматически удалять неактивные ссылки из индекса WordPress
09.01.2026
IndexNow автоматическая отправка URL для пользовательских таксономий WordPress
10.02.2026
IndexNow и канонические URL в WordPress: решение проблем с дублированием
18.12.2025
×
Оптимизируй свой сайт!

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

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