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

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

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

Диагностика проблемы

Для начала нужно проверить, какие товары отсутствуют на складе и при этом остаются в индексе. Пошагово:

  1. В панели WooCommerce откройте раздел Товары и отфильтруйте по статусу Нет в наличии.
  2. Проверьте, что эти товары доступны для индексирования (не скрыты robots.txt или мета-тегом noindex).
  3. Используйте инструмент IndexNow или логи сервера для оценки, отправлялись ли запросы на удаление таких URL.

Если URL товаров с отсутствием не отправляются в IndexNow, значит автоматизация не настроена или работает некорректно.

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

1. Создаем функцию для отправки URL в IndexNow

function send_url_to_indexnow($url, $action = 'update') {
    $api_key = 'ВАШ_КЛЮЧ_API_INDEXNOW';
    $endpoint = 'https://api.indexnow.org/indexnow';
    $payload = [
        'host' => parse_url(home_url(), PHP_URL_HOST),
        'key' => $api_key,
        'keyLocation' => home_url('/indexnow-key.txt'),
        'urlList' => [$url],
        'action' => $action,
    ];

    $args = [
        'body' => json_encode($payload),
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'timeout' => 10,
    ];

    $response = wp_remote_post($endpoint, $args);

    if (is_wp_error($response)) {
        error_log('IndexNow error: ' . $response->get_error_message());
        return false;
    }

    $code = wp_remote_retrieve_response_code($response);
    return $code === 200;
}

2. Отслеживаем изменение наличия товара и отправляем URL на удаление

Добавим хук на сохранение товара, который проверит статус наличия и при отсутствии отправит URL с действием delete.

add_action('woocommerce_update_product', function($product_id) {
    $product = wc_get_product($product_id);
    if (!$product) return;

    // Проверяем, что товар нет в наличии и опубликован
    if (!$product->is_in_stock() && $product->is_visible()) {
        $url = get_permalink($product_id);
        $sent = send_url_to_indexnow($url, 'delete');
        if ($sent) {
            error_log("IndexNow: URL удален из индекса - $url");
        }
    }
});

3. Создаем WP-Cron задачу для массовой проверки товаров без наличия

Чтобы не пропускать товары, изменившие статус вне интерфейса, настроим ежедневный скрипт.

function indexnow_remove_out_of_stock_products() {
    $args = [
        'post_type' => 'product',
        'posts_per_page' => 100,
        'meta_query' => [
            [
                'key' => '_stock_status',
                'value' => 'outofstock',
            ],
        ],
        'fields' => 'ids',
    ];

    $query = new WP_Query($args);
    if (!$query->have_posts()) return;

    foreach ($query->posts as $product_id) {
        $url = get_permalink($product_id);
        send_url_to_indexnow($url, 'delete');
    }
}

if (!wp_next_scheduled('indexnow_daily_cleanup')) {
    wp_schedule_event(time(), 'daily', 'indexnow_daily_cleanup');
}
add_action('indexnow_daily_cleanup', 'indexnow_remove_out_of_stock_products');

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

  • Посмотрите логи ошибок WordPress, чтобы убедиться, что запросы к IndexNow проходят без ошибок.
  • Используйте инструменты IndexNow (например, https://www.bing.com/webmaster/tools/indexnow) для проверки отправленных URL.
  • Проверьте HTTP-ответы сервера на URL товаров без наличия — должны быть 200, но с мета-тегом noindex или 410, если удалены.
  • Через несколько дней убедитесь, что поисковые системы исключили эти страницы из индекса.

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

  • Неверный API-ключ или отсутствие файла ключа: Проверьте, что файл indexnow-key.txt доступен по указанному пути и ключ совпадает с API-ключом.
  • Отправка URL, которые не существуют или возвращают 404: Убедитесь, что URL товаров действительно доступны на сайте.
  • Функция отправки вызывается слишком часто: Используйте частное кеширование или лимитирование вызовов, чтобы не превышать лимит запросов IndexNow.
  • Отсутствие проверки статуса наличия товара: Проверяйте актуальный статус, а не только метаданные, чтобы не отправлять лишние запросы.

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

  • Используйте встроенный WP-Cron для планирования задач, но если сайт большой, лучше настроить системный cron для надежности.
  • Храните API-ключ в wp-config.php или в безопасном месте, не в коде плагина.
  • Ограничьте количество URL в одном запросе до 10-20 для стабильной работы IndexNow.
  • Логируйте результаты отправки в отдельный файл для отладки и мониторинга.
  • Если используете кэширование (Redis, Memcached), очищайте кэш при изменении статуса товара.

Сравнение методов автоматизации удаления товаров без наличия

МетодПлюсыМинусыПример кода/плагин
Хук на обновление товараМгновенная отправка URL при измененииНе ловит изменения вне админки (импорт, БД)Пример кода выше
Ежедневный WP-CronОбрабатывает массовые изменения, надеженЗадержка до 24 часов, нагрузка на БДПример кода выше
Плагины автоматизации (например, Clearfy Pro)Готовые решения с UI и расширенными настройкамиПлатные, менее гибкие под кастомные задачиClearfy Pro

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

⭐⭐⭐⭐⭐
IndexNow автоматическая отправка URL для пользовательских таксономий WordPress
10.02.2026
IndexNow в WordPress: решение проблем с отправкой URL при использовании разных кэширований
29.06.2026
Как сделать обновление метаданных WordPress без изменения контента
04.12.2025
Как использовать Cron в WordPress для автоматизации задач
18.11.2025
IndexNow в разных PHP-фреймворках: сравнение и практические примеры интеграции
02.03.2026
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее