IndexNow автоматическая отправка URL при изменении постов WordPress

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

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

Когда вы публикуете или обновляете контент, важно, чтобы поисковые системы как можно быстрее узнали об изменениях. Ручная отправка URL — трудоемкий процесс, особенно при большом количестве изменений. Автоматизация позволяет интегрировать отправку URL прямо в жизненный цикл WordPress, используя хуки и события.

Преимущества автоматической отправки URL:

  • Мгновенное уведомление поисковиков об изменениях;
  • Ускорение индексации новых и обновленных страниц;
  • Снижение нагрузки на сервер за счет минимизации повторных проверок;
  • Упрощение SEO-оптимизации без дополнительных ручных действий.

Как реализовать автоматическую отправку URL в IndexNow при изменении постов WordPress

Для реализации автоматической отправки URL при изменении постов используем системные хуки WordPress save_post и delete_post. При сохранении поста или его удалении будет выполняться функция, которая отправляет URL в IndexNow.

Подготовка функции отправки URL в IndexNow

Для отправки запросов к IndexNow используем стандартный HTTP клиент WordPress — wp_remote_post. Ниже пример функции indexnow_send_url для отправки одного URL:

function indexnow_send_url( string $url, string $key ) {
    $endpoint = 'https://api.indexnow.org/indexnow';
    $body = [
        'host' => parse_url( $url, PHP_URL_HOST ),
        'key' => $key,
        'keyLocation' => home_url( '/indexnow-key.txt' ),
        'urlList' => [ $url ],
    ];

    $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: Ошибка отправки URL - ' . $response->get_error_message() );
        return false;
    }

    $code = wp_remote_retrieve_response_code( $response );
    if ( $code !== 200 ) {
        error_log( 'IndexNow: Неверный ответ сервера - ' . $code );
        return false;
    }

    return true;
}

Здесь $key — это ваш уникальный ключ IndexNow, который нужно сохранить в корне сайта в файле indexnow-key.txt и использовать в отправке.

Подключение функции к событиям WordPress

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

function indexnow_su_on_save_post( $post_id ) {
    if ( wp_is_post_revision( $post_id ) ) {
        return;
    }

    $post = get_post( $post_id );
    if ( $post->post_status !== 'publish' ) {
        return; // Отправляем только опубликованные
    }

    $url = get_permalink( $post_id );
    $key = get_option( 'indexnow_su_key' );

    indexnow_send_url( $url, $key );
}
add_action( 'save_post', 'indexnow_su_on_save_post' );

function indexnow_su_on_delete_post( $post_id ) {
    $url = get_permalink( $post_id );
    $key = get_option( 'indexnow_su_key' );

    indexnow_send_url( $url, $key );
}
add_action( 'delete_post', 'indexnow_su_on_delete_post' );

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

Обработка массовых изменений: отправка списком URL в IndexNow

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

Пример функции отправки массива URL

function indexnow_send_urls_batch( array $urls, string $key ) {
    $endpoint = 'https://api.indexnow.org/indexnow';

    $host = parse_url( $urls[0], PHP_URL_HOST );

    $body = [
        'host' => $host,
        'key' => $key,
        'keyLocation' => home_url( '/indexnow-key.txt' ),
        'urlList' => $urls,
    ];

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

    if ( is_wp_error( $response ) ) {
        error_log( 'IndexNow batch: Ошибка отправки URL - ' . $response->get_error_message() );
        return false;
    }

    $code = wp_remote_retrieve_response_code( $response );
    if ( $code !== 200 ) {
        error_log( 'IndexNow batch: Неверный ответ сервера - ' . $code );
        return false;
    }

    return true;
}

Для вызова этой функции можно собрать URL из последних измененных постов и отправить периодически через Cron или WP-Cron.

Пример задачи WP-Cron для периодической отправки

function indexnow_su_cron_job() {
    $key = get_option( 'indexnow_su_key' );
    $args = [
        'post_type' => 'post',
        'post_status' => 'publish',
        'date_query' => [
            'after' => '1 day ago',
        ],
        'fields' => 'ids',
        'posts_per_page' => 50,
    ];

    $posts = get_posts( $args );
    if ( empty( $posts ) ) {
        return;
    }

    $urls = array_map( function( $id ) {
        return get_permalink( $id );
    }, $posts );

    indexnow_send_urls_batch( $urls, $key );
}

if ( ! wp_next_scheduled( 'indexnow_su_cron_hook' ) ) {
    wp_schedule_event( time(), 'hourly', 'indexnow_su_cron_hook' );
}
add_action( 'indexnow_su_cron_hook', 'indexnow_su_cron_job' );

Этот код запускает каждочасовую отправку URL опубликованных за последние сутки постов.

Рекомендации по безопасности и производительности

1. Храните ключ IndexNow в настройках WordPress или в защищенном конфигурационном файле, не публикуйте его в открытом виде.

2. Обязательно проверяйте статус ответа сервера и логируйте ошибки — это поможет отследить проблемы в работе.

3. При большом объеме сайта используйте пакетную отправку URL, чтобы не перегружать сервер и API IndexNow.

4. Ограничивайте отправку URL только для опубликованных и публично доступных страниц, чтобы не индексировались черновики и приватный контент.

Использование плагина Clearfy Pro для интеграции с IndexNow

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

Преимущества Clearfy Pro

  • Автоматическое подключение ключа IndexNow;
  • Управление отправкой URL из админки без кода;
  • Оптимизация работы сайта и SEO;
  • Регулярные обновления и поддержка.

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

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

⭐⭐⭐⭐⭐
Оптимизация файла robots.txt для IndexNow и WordPress: практические советы и примеры
21.11.2025
IndexNow и отладка отправки URL в крупных проектах WordPress: практические советы
24.02.2026
Как использовать Cron в WordPress для автоматизации задач
18.11.2025
Создание кастомных плагинов WordPress с паттернами и namespace для улучшения структуры кода
18.11.2025
IndexNow: как автоматически удалять слуги с постоянным редиректом в WordPress и обновлять индекс
14.04.2026
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее