Как создать плагин WordPress для автоматической отправки URL в IndexNow

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

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

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

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

Как работает API IndexNow: основы и требования

API IndexNow предполагает отправку HTTP-запроса POST или GET с URL измененной страницы и ключом сайта. Основные моменты:

  • Ключ сайта — уникальный идентификатор, который нужно получить и разместить на сервере в виде файла или метатега.
  • URL-адреса, которые нужно отправить, должны быть полными и корректными.
  • Поддерживаются несколько поисковых систем, включая Bing, Yandex и другие, которые реализуют протокол.

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

POST https://www.bing.com/indexnow?url=https://example.com/page&key=ваш_ключ

Ответ сервера подтверждает успешную отправку.

Создаем структуру плагина для WordPress с поддержкой IndexNow

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

Создайте папку indexnow-auto-submit в директории /wp-content/plugins/ и внутри создайте файл indexnow-auto-submit.php с таким содержимым:

<?php
/**
 * Plugin Name: IndexNow Auto Submit
 * Description: Автоматическая отправка URL в IndexNow при публикации и обновлении страниц.
 * Version: 1.0
 * Author: indexnow.su
 */

// Защита от прямого доступа
if (!defined('ABSPATH')) {
    exit;
}

// Подключаем функции плагина
require_once plugin_dir_path(__FILE__) . 'includes/indexnow-functions.php';

Далее создайте папку includes и в ней файл indexnow-functions.php, где будет логика отправки.

Реализация функции отправки URL в IndexNow

В файле indexnow-functions.php напишем функцию indexnowsu_send_url_to_indexnow, которая принимает URL и отправляет его на сервер поисковой системы.

<?php

function indexnowsu_send_url_to_indexnow($url) {
    $api_key = 'ваш_ключ_из_IndexNow'; // Замените на ваш ключ
    $endpoint = 'https://www.bing.com/indexnow';

    $request_url = add_query_arg(array(
        'url' => $url,
        'key' => $api_key
    ), $endpoint);

    $response = wp_remote_post($request_url);

    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: URL успешно отправлен - ' . $url);
        return true;
    } else {
        error_log('IndexNow: Неудачная отправка URL ' . $url . ' Код ответа: ' . $code);
        return false;
    }
}

Подключаем автоматическую отправку при публикации и обновлении постов

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

function indexnowsu_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);
    if ($url) {
        indexnowsu_send_url_to_indexnow($url);
    }
}
add_action('save_post', 'indexnowsu_on_save_post');

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

Настройка ключа IndexNow и размещение файла на сервере

Для работы протокола необходимо получить ключ сайта в формате случайной строки символов. В Bing Webmaster Tools или других поддерживающих серверах можно его сгенерировать.

После получения ключа создайте в корне сайта файл с именем ключ.txt, где ключ — это ваш ключ, например abcd1234efgh5678.txt. Внутри файла должна быть повторена строка ключа.

Пример содержимого файла:

abcd1234efgh5678

Это необходимо для подтверждения владельца сайта поисковыми системами.

Расширение плагина: отправка URL при удалении или смене статуса

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

IndexNow поддерживает отправку URL с указанием действия удаления, например, через параметр action=delete (нужно уточнить в документации конкретной поисковой системы).

Пример функции для удаления URL:

function indexnowsu_delete_url_from_indexnow($url) {
    $api_key = 'ваш_ключ_из_IndexNow';
    $endpoint = 'https://www.bing.com/indexnow';

    $request_url = add_query_arg(array(
        'url' => $url,
        'key' => $api_key,
        'action' => 'delete'
    ), $endpoint);

    $response = wp_remote_post($request_url);

    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: URL успешно удален - ' . $url);
        return true;
    } else {
        error_log('IndexNow: Неудачное удаление URL ' . $url . ' Код ответа: ' . $code);
        return false;
    }
}

function indexnowsu_on_delete_post($post_id) {
    $url = get_permalink($post_id);
    if ($url) {
        indexnowsu_delete_url_from_indexnow($url);
    }
}
add_action('before_delete_post', 'indexnowsu_on_delete_post');

Рекомендации по тестированию и отладке плагина

После разработки плагина важно проверить корректность работы:

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

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

Заключение

Создание собственного плагина для автоматической отправки URL в IndexNow дает полный контроль над процессом индексации и позволяет интегрировать этот современный протокол в рабочий процесс WordPress. Используя приведенный код и рекомендации, вы сможете ускорить появление новых страниц в поисковой выдаче и повысить эффективность SEO.

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

⭐⭐⭐⭐⭐
IndexNow и robots.txt для автоматической блокировки ненужных URL в WordPress
06.03.2026
Как правильно настроить ограничение частоты запросов IndexNow в WordPress
17.03.2026
Как удалить редиректы и ошибки 404 из индекса с помощью IndexNow в WordPress
04.12.2025
Как автоматически удалять слуги с постоянным редиректом в WordPress и обновлять индекс с помощью IndexNow
26.03.2026
IndexNow для WordPress: интеграция и оптимизация индексации сайта
03.11.2025
×
WPShop
честная партнерка!

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

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