IndexNow: решение проблем с отправкой массовых URL в WordPress

IndexNow – современный протокол для мгновенного уведомления поисковых систем об изменениях на сайте. Он помогает значительно ускорить индексацию новых и обновлённых страниц. Однако при работе с WordPress и большим количеством URL возникает ряд проблем, связанных с массовой отправкой данных. В этой статье разберём, как правильно организовать отправку массовых URL в IndexNow, чтобы избежать ошибок и ограничений.

Почему возникают проблемы с массовой отправкой URL в IndexNow

IndexNow поддерживает отправку URL в формате JSON с ограничением по количеству ссылок в одном запросе. Обычно это не более 1000 URL за один вызов. Если попытаться отправить слишком много или отправлять запросы слишком часто, можно получить ошибки от сервера или блокировку.

Кроме того, в WordPress страницы часто динамические, и ссылки могут включать параметры, которые не нужно индексировать. Без фильтрации и правильной подготовки списка URL есть риск отправить неактуальные или нежелательные страницы.

Также некоторые хостинги и сервера ограничивают количество одновременных исходящих запросов, что усложняет массовую отправку.

Ограничения протокола IndexNow

  • Максимум 1000 URL в одном запросе.
  • Рекомендуется не превышать 10 000 URL в сутки.
  • Задержка между отправками: не менее 30 секунд.

Знание этих ограничений поможет грамотно строить логику отправки.

Как подготовить список URL для отправки в IndexNow из WordPress

Первым шагом всегда должна быть фильтрация и формирование корректного списка URL. Приведём пример функции, которая собирает URL опубликованных записей, исключая страницы с пагинацией, авторов и архивов:

function indexnow_su_get_urls_for_indexnow() {
    $urls = [];
    $args = [
        'post_type'      => ['post', 'page'],
        'post_status'    => 'publish',
        'posts_per_page' => -1,
        'fields'         => 'ids',
    ];
    $query = new WP_Query($args);
    if ($query->have_posts()) {
        foreach ($query->posts as $post_id) {
            $url = get_permalink($post_id);
            // Можно добавить дополнительные фильтры, например, убрать параметры
            $urls[] = esc_url_raw($url);
        }
    }
    wp_reset_postdata();
    return $urls;
}

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

Реализация отправки URL в IndexNow с разбиением на пакеты

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

function indexnow_su_send_urls_batch($urls) {
    $api_key = 'ваш_ключ_или_папка_с_ключом';
    $host = home_url('/');
    $endpoint = 'https://api.indexnow.org/indexnow';

    $chunks = array_chunk($urls, 1000);
    foreach ($chunks as $chunk) {
        $data = [
            'host' => parse_url($host, PHP_URL_HOST),
            'key'  => $api_key,
            'keyLocation' => home_url("/{$api_key}.txt"),
            'urlList' => $chunk,
        ];

        $args = [
            'body'        => json_encode($data),
            'headers'     => ['Content-Type' => 'application/json'],
            'timeout'     => 15,
            'redirection' => 5,
            'blocking'    => true,
        ];

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

        if (is_wp_error($response)) {
            error_log('IndexNow отправка не удалась: ' . $response->get_error_message());
        } elseif (wp_remote_retrieve_response_code($response) != 200) {
            error_log('IndexNow ответ сервера: ' . wp_remote_retrieve_response_message($response));
        } else {
            // Успешная отправка
            sleep(30); // Задержка между пакетами
        }
    }
}

Обратите внимание на задержку в 30 секунд между отправками, чтобы не получить блокировку.

Автоматизация отправки с помощью WP-Cron

Для удобства можно автоматизировать отправку через WP-Cron, чтобы регулярно отправлять обновлённые URL.

function indexnow_su_schedule_cron() {
    if (!wp_next_scheduled('indexnow_su_cron_hook')) {
        wp_schedule_event(time(), 'hourly', 'indexnow_su_cron_hook');
    }
}
add_action('wp', 'indexnow_su_schedule_cron');

function indexnow_su_cron_function() {
    $urls = indexnow_su_get_urls_for_indexnow();
    indexnow_su_send_urls_batch($urls);
}
add_action('indexnow_su_cron_hook', 'indexnow_su_cron_function');

Такой подход позволит регулярно поддерживать актуальность индекса в поисковых системах.

Использование плагинов для упрощения работы с IndexNow

Если не хочется писать код, можно использовать плагины, которые поддерживают отправку URL в IndexNow с учётом массы и ограничений:

  • Clearfy Pro – содержит инструменты для SEO и может помочь с интеграцией IndexNow, включая фильтрацию URL.
  • WPRemark – плагин с расширенными возможностями работы с SEO и индексированием.

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

Обработка ошибок и логирование при массовой отправке IndexNow

Очень важно вести логирование ошибок, чтобы вовремя выявлять проблемы. В примерах выше используется error_log для записи ошибок в системный лог PHP.

Можно расширить логику, добавив запись в отдельный файл или базу данных, чтобы иметь историю отправок и статистику.

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

Пример расширенного логирования

function indexnow_su_log($message) {
    $log_file = WP_CONTENT_DIR . '/indexnow.log';
    $date = date('Y-m-d H:i:s');
    file_put_contents($log_file, "[$date] $message\n", FILE_APPEND);
}

// Использование:
// indexnow_su_log('Ошибка отправки: ' . $response->get_error_message());

Такой подход позволит анализировать стабильность работы и улучшать отправку.

Выводы и рекомендации

Массовая отправка URL в IndexNow из WordPress требует аккуратного подхода: правильная подготовка списка, разбивка на пакеты, задержки между запросами и обработка ошибок. Автоматизация через WP-Cron и использование готовых плагинов помогают снизить нагрузку на разработчика и повысить эффективность.

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

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

⭐⭐⭐⭐⭐
IndexNow и автоматизация отправки URL в WordPress с помощью Cron и REST API
27.02.2026
IndexNow и SSL в WordPress: практические советы по устранению проблем с индексацией
17.01.2026
Создание кастомных плагинов WordPress с паттернами и namespace для улучшения структуры кода
18.11.2025
Оптимизация файла robots.txt для IndexNow и WordPress: практические советы и примеры
21.11.2025
IndexNow автоматическое отправление изменений в WordPress: практическое руководство
11.12.2025
×
WPShop
честная партнерка!

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

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