Как отправлять изменения в IndexNow при использовании WP REST API в WordPress

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

Зачем нужна отправка URL в IndexNow при изменении через WP REST API

WP REST API позволяет создавать, обновлять и удалять записи программно, обходя стандартный интерфейс WordPress. Однако при таких изменениях стандартные хуки WordPress, которые обычно запускают отправку URL в IndexNow, могут не сработать автоматически. Это приводит к тому, что поисковые системы не получают информацию об изменениях и не обновляют индекс так быстро, как хотелось бы.

Реализация отправки URL в IndexNow непосредственно в обработчиках REST API поможет:

  • Ускорить индексацию новых и обновлённых страниц;
  • Автоматически удалять из индекса устаревшие или удалённые записи;
  • Поддерживать актуальность данных в поисковых системах без лишних ручных действий.

Как работает отправка URL в IndexNow: краткое напоминание

IndexNow — это протокол, позволяющий сайтам мгновенно уведомлять поисковые системы об изменениях на сайте путём отправки URL изменённых страниц. Для этого нужен ключ API и вызов HTTP POST с JSON, содержащим список страниц.

Пример запроса IndexNow выглядит так:

POST https://api.indexnow.org/indexnow
Content-Type: application/json

{
  "host": "example.com",
  "key": "ваш_ключ_api",
  "keyLocation": "https://example.com/ключ.txt",
  "urlList": ["https://example.com/page1", "https://example.com/page2"]
}

Реализация отправки URL при изменении через WP REST API

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

Обработка создания и обновления постов

В WordPress есть хук rest_after_insert_{$post_type}, который вызывается после успешного сохранения записи через REST API. Его можно использовать для отправки URL в IndexNow.

function indexnow_su_send_url_after_rest_insert(\WP_Post $post, \WP_REST_Request $request, \bool $creating) {
    // Проверим, что это нужный тип поста (например, только 'post' и 'page')
    if (!in_array($post->post_type, ['post', 'page'])) {
        return;
    }

    // Формируем URL
    $url = get_permalink($post);

    // Отправляем в IndexNow
    indexnow_su_send_url_to_indexnow([$url]);
}
add_action('rest_after_insert_post', 'indexnow_su_send_url_after_rest_insert', 10, 3);
add_action('rest_after_insert_page', 'indexnow_su_send_url_after_rest_insert', 10, 3);

Обработка удаления постов через REST API

Удаление записей через REST API можно отследить через хук before_delete_post. Но чтобы убедиться, что удаление произошло через REST API, проверим контекст.

function indexnow_su_send_url_after_rest_delete($post_id) {
    if (!wp_doing_ajax() && defined('REST_REQUEST') && REST_REQUEST) {
        $post = get_post($post_id);
        if (!$post) {
            // Пост уже удалён, формируем URL вручную
            // Предполагается, что URL уже не доступен, но можно отправить для удаления
            $url = home_url('/?p=' . $post_id);
        } else {
            $url = get_permalink($post);
        }
        indexnow_su_send_url_to_indexnow([$url], true); // true — означает удаление URL
    }
}
add_action('before_delete_post', 'indexnow_su_send_url_after_rest_delete');

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

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

function indexnow_su_send_url_to_indexnow(array $urls, bool $is_delete = false) {
    $api_key = 'ваш_ключ_api'; // Замените на свой ключ
    $host = parse_url(home_url(), PHP_URL_HOST);
    $endpoint = 'https://api.indexnow.org/indexnow';

    $data = [
        'host' => $host,
        'key' => $api_key,
        'keyLocation' => home_url('/' . $api_key . '.txt'),
        'urlList' => $urls
    ];

    $args = [
        'headers' => ['Content-Type' => 'application/json'],
        'body' => wp_json_encode($data),
        'method' => 'POST',
        'timeout' => 15,
    ];

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

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

    return true;
}

Практические рекомендации и отладка

1. Ключ API: Получите ключ IndexNow и загрузите файл ключа на сайт по адресу https://ваш_сайт/ключ.txt. Это подтверждает владение сайтом.

2. Логирование: В функции отправки URL добавьте логирование ошибок, чтобы быстро выявлять проблемы при разработке и эксплуатации.

3. Проверка REST API: Для сложных кастомных типов и расширенных REST эндпоинтов добавляйте аналогичные хуки rest_after_insert_{$post_type}.

4. Ограничение частоты: Если у вас большой сайт с частыми изменениями, добавьте очередь и ограничьте частоту отправок, чтобы не превысить лимиты IndexNow.

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

Если не хотите писать код с нуля, рассмотрите плагин Clearfy Pro. Он поддерживает интеграцию с IndexNow и позволяет автоматически отправлять URL при изменениях, включая работу с REST API. В интерфейсе можно настроить ключ и исключения без программирования.

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

Заключение

Отправка URL в IndexNow при изменениях через WP REST API — важный шаг в поддержании актуальности индекса поисковых систем. Используя хук rest_after_insert_{$post_type} и функцию отправки запросов, можно автоматизировать процесс и существенно ускорить индексацию.

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

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

⭐⭐⭐⭐⭐
IndexNow и WooCommerce: решение проблем индексации товаров и страниц
25.12.2025
IndexNow: как автоматически отправлять URL при импорте контента в WordPress
27.04.2026
IndexNow автоматическая отправка URL для пользовательских таксономий WordPress
10.02.2026
IndexNow и автоматизация отправки URL в WordPress с помощью Cron и REST API
27.02.2026
Как автоматизировать удаление и обновление URL в WordPress с помощью Webhooks и IndexNow
04.04.2026
×
WPShop
честная партнерка!

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

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