IndexNow отправка URL из WordPress при использовании REST API

IndexNow — это современный протокол для ускоренной индексации изменений на сайте поисковыми системами. Если ваш WordPress-сайт активно использует REST API для создания, редактирования или удаления контента, важно, чтобы изменения автоматически попадали в индекс поисковиков через IndexNow. В этой статье мы рассмотрим, как реализовать автоматическую отправку URL с помощью REST API и WordPress, а также приведём примеры кода и рекомендации по оптимизации.

Почему важно интегрировать IndexNow с REST API WordPress

REST API в WordPress позволяет создавать кастомные приложения, мобильные клиенты, а также интегрировать внешние сервисы, которые могут изменять контент сайта. При этом изменения, сделанные через API, могут не попадать в автоматические механизмы, основанные на хуках WordPress, что приводит к задержкам в индексации и потерям трафика.

Интеграция IndexNow с REST API решает эту проблему: при создании, обновлении или удалении записи через API автоматически отправляется соответствующий URL в поисковые системы, поддерживающие IndexNow (Яндекс, Bing и др.). Это гарантирует максимально быструю реакцию поисковиков на изменения.

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

Обзор основных вызовов при интеграции

  • Отслеживание событий создания, обновления и удаления записей через REST API.
  • Формирование корректного списка URL для отправки в IndexNow.
  • Обработка ошибок и повторная отправка при сбоях.
  • Минимизация нагрузок на сайт и API поисковых систем.

Реализация отправки IndexNow URL при работе с REST API

Для интеграции мы будем использовать хуки WordPress REST API — rest_after_insert_{post_type} для создания и обновления, а также rest_delete_{post_type} для удаления записей. В этих хуках мы вызовем функцию отправки URL в IndexNow.

Пример кода с приставкой indexnowsu_ для функций:

function indexnowsu_send_url_to_indexnow( string $url ) {
    $api_key = 'ваш_ключ_IndexNow'; // Получите ключ на сайте IndexNow
    $endpoint = 'https://api.indexnow.org/indexnow?url=' . urlencode( $url ) . '&key=' . $api_key;

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

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

    $code = wp_remote_retrieve_response_code( $response );
    if ( $code !== 200 ) {
        error_log( 'IndexNow: Неудачный HTTP-код ' . $code . ' при отправке URL ' . $url );
        return false;
    }

    return true;
}

// Отправка URL при создании и обновлении записи через REST API
add_action( 'rest_after_insert_post', function( $post, $request, $creating ) {
    if ( ! in_array( $post->post_status, [ 'publish', 'private' ], true ) ) {
        return; // Отправляем только опубликованные или приватные записи
    }

    $url = get_permalink( $post->ID );
    indexnowsu_send_url_to_indexnow( $url );
}, 10, 3 );

// Отправка URL при удалении записи через REST API
add_action( 'rest_delete_post', function( $post ) {
    $url = get_permalink( $post->ID );
    indexnowsu_send_url_to_indexnow( $url );
} );

В этом коде:

  • Функция indexnowsu_send_url_to_indexnow формирует и отправляет запрос на API IndexNow.
  • Хук rest_after_insert_post срабатывает при создании или обновлении записи через REST API и отправляет URL.
  • Хук rest_delete_post вызывается при удалении записи и отправляет URL для удаления из индекса.

Особенности и рекомендации

Важно проверять статус публикации — отправлять URL стоит только для опубликованных страниц. Для черновиков и авто-сохранений отправка не нужна.

Если у вас много типов записей, замените post в хуках на нужный тип, например rest_after_insert_product для WooCommerce.

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

Оптимизация работы с IndexNow и REST API

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

Группировка URL для пакетной отправки

IndexNow API поддерживает отправку сразу нескольких URL за один запрос. Вместо частых одиночных запросов лучше накапливать URL в базе или кэше и отправлять пакетами, например, по 10-20 ссылок каждые 5-10 минут.

function indexnowsu_send_urls_batch( array $urls ) {
    $api_key = 'ваш_ключ_IndexNow';
    $endpoint = 'https://api.indexnow.org/indexnow';

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

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

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

    $code = wp_remote_retrieve_response_code( $response );
    if ( $code !== 200 ) {
        error_log( 'IndexNow Batch: Неудачный HTTP-код ' . $code );
        return false;
    }

    return true;
}

Для реализации очереди можно использовать transient API или настраиваемую таблицу, а запускать отправку через WP Cron.

Контроль повторных отправок и ошибок

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

Интеграция с популярными плагинами и темами WordPress

Если вы используете плагины с REST API (например, WooCommerce, WPGPT, Clearfy Pro), можно расширить нашу логику, добавив обработчики для их кастомных типов записей.

Например, для WooCommerce:

add_action( 'rest_after_insert_product', function( $post, $request, $creating ) {
    if ( $post->get_status() !== 'publish' ) {
        return;
    }
    $url = get_permalink( $post->get_id() );
    indexnowsu_send_url_to_indexnow( $url );
}, 10, 3 );

Для тем с кастомными постами (например, JournalX или Root) аналогично добавляйте хуки с нужным типом.

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

Заключение по теме автоматической отправки URL через REST API и IndexNow

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

В статье мы рассмотрели, как грамотно реализовать отправку URL из REST API с примерами кода, подходами к оптимизации и рекомендациями по интеграции с плагинами. Это позволит вам создать надежный и эффективный механизм поддержки актуальности индекса поисковых систем.

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

⭐⭐⭐⭐⭐
IndexNow для WordPress: интеграция и оптимизация индексации сайта
03.11.2025
IndexNow: как автоматически удалять слуги с постоянным редиректом в WordPress и обновлять индекс
14.04.2026
IndexNow: как автоматически отправлять URL при импорте контента в WordPress
08.04.2026
Оптимизация файла robots.txt для IndexNow и WordPress: практические советы и примеры
21.11.2025
IndexNow и WooCommerce: автоматизация отправки URL при изменениях наличия товаров
18.04.2026
×
WPShop
честная партнерка!

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

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