Как добавить IndexNow в WordPress без плагинов: ручная интеграция и примеры кода

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

Почему стоит интегрировать IndexNow вручную

Существует много готовых плагинов для WordPress, которые добавляют поддержку IndexNow. Однако у них есть недостатки: лишний функционал, который может замедлять сайт, зависимости от обновлений и конфликтов. Ручная интеграция позволяет:

  • Минимизировать нагрузку и количество сторонних зависимостей.
  • Контролировать весь процесс отправки URL.
  • Настроить отправку по своим правилам и триггерам.

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

Что нужно знать для ручной интеграции IndexNow

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

  • Сгенерировать и разместить ключ API в корне сайта (файл .txt).
  • Отправлять запросы с URL и ключом на специальные эндпоинты поисковых систем.
  • Автоматизировать отправку при публикации или изменении контента.

Далее рассмотрим, как это сделать в WordPress с помощью своего кода.

Шаг 1. Генерация и размещение ключа API IndexNow

Для начала получите ключ API – это обычно случайная строка длиной 16-32 символа. Например, можно сгенерировать такой ключ вручную или автоматизировать процесс:

function indexnow_su_generate_api_key() {
  return bin2hex(random_bytes(16));
}

После этого создайте в корне сайта файл ключ-api.txt с содержимым равным этому ключу. Например, если ключ 1234567890abcdef1234567890abcdef, файл 1234567890abcdef1234567890abcdef.txt должен содержать эту же строку.

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

Шаг 2. Отправка URL в поисковые системы вручную

Протокол IndexNow поддерживают основные поисковики: Bing, Yandex, и другие. Отправка происходит POST-запросом с JSON или GET-запросом с параметрами.

Формат GET-запроса:

https://www.bing.com/indexnow?url=https://yoursite.ru/your-page/&key=ключ-api

Для удобства сделаем функцию отправки URL в IndexNow на PHP:

function indexnow_su_send_url_to_indexnow($url, $api_key) {
  $endpoint = 'https://www.bing.com/indexnow';
  $request_url = $endpoint . '?url=' . urlencode($url) . '&key=' . $api_key;

  $response = wp_remote_get($request_url, [
    'timeout' => 10,
    'headers' => [
      'User-Agent' => 'indexnow.su WordPress Integration'
    ]
  ]);

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

  if (wp_remote_retrieve_response_code($response) == 200) {
    return true;
  }

  error_log('IndexNow: Неудачный ответ - ' . wp_remote_retrieve_response_code($response));
  return false;
}

Эта функция отправляет один URL на индексирование и логирует ошибки.

Шаг 3. Автоматизация отправки URL при публикации и обновлении постов

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

Добавим обработчик:

add_action('publish_post', 'indexnow_su_on_post_published', 10, 2);
add_action('post_updated', 'indexnow_su_on_post_updated', 10, 3);

function indexnow_su_on_post_published($post_id, $post) {
  if ($post->post_status !== 'publish') {
    return;
  }

  $api_key = file_get_contents(ABSPATH . 'ключ-api.txt');
  if (!$api_key) {
    error_log('IndexNow: Ключ API не найден');
    return;
  }

  $url = get_permalink($post_id);
  indexnow_su_send_url_to_indexnow($url, trim($api_key));
}

function indexnow_su_on_post_updated($post_id, $post_after, $post_before) {
  if ($post_after->post_status !== 'publish') {
    return;
  }

  $api_key = file_get_contents(ABSPATH . 'ключ-api.txt');
  if (!$api_key) {
    error_log('IndexNow: Ключ API не найден');
    return;
  }

  $url = get_permalink($post_id);
  indexnow_su_send_url_to_indexnow($url, trim($api_key));
}

Так при создании или обновлении поста URL автоматически отправится в поисковики.

Шаг 4. Как отправлять удалённые URL для деиндексации

Если страница удалена, стоит сообщить поисковикам, чтобы они убрали её из индекса. Для этого нужно отправить URL с параметром action=delete. Пример реализации:

function indexnow_su_send_url_for_deletion($url, $api_key) {
  $endpoint = 'https://www.bing.com/indexnow';
  $request_url = $endpoint . '?url=' . urlencode($url) . '&key=' . $api_key . '&action=delete';

  $response = wp_remote_get($request_url, [
    'timeout' => 10,
    'headers' => [
      'User-Agent' => 'indexnow.su WordPress Integration'
    ]
  ]);

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

  if (wp_remote_retrieve_response_code($response) == 200) {
    return true;
  }

  error_log('IndexNow delete: Неудачный ответ - ' . wp_remote_retrieve_response_code($response));
  return false;
}

add_action('before_delete_post', function($post_id) {
  $api_key = file_get_contents(ABSPATH . 'ключ-api.txt');
  if (!$api_key) {
    error_log('IndexNow: Ключ API не найден');
    return;
  }
  $url = get_permalink($post_id);
  if ($url) {
    indexnow_su_send_url_for_deletion($url, trim($api_key));
  }
});

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

Шаг 5. Проверка и отладка работы интеграции

Для контроля работы интеграции рекомендуем:

  • Включить логирование ошибок через error_log в коде.
  • Проверять наличие файла ключа API и его содержимое.
  • Отслеживать HTTP-ответы от поисковиков (200 – успех, 4xx/5xx – ошибки).
  • Проверять консоль поисковых систем, например Bing Webmaster Tools, на предмет активности.

Если нужно, можно добавить админ-панель с отчётами, но это уже тема для отдельной статьи.

Полезные советы по безопасности

Не храните ключ API в открытых местах. Размещайте файл ключ-api.txt в корне сайта и проверьте, что к нему нельзя получить доступ через браузер (настройте .htaccess или сервер).

Также можно хранить ключ в wp-config.php и получать его из константы.

Итоги и возможности расширения

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

Дальнейшие улучшения могут включать:

  • Отправку нескольких URL за один запрос (если будет поддержка).
  • Интеграцию с REST API WordPress для расширенной автоматизации.
  • Создание интерфейса для просмотра статусов отправки.

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

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

⭐⭐⭐⭐⭐
Оптимизация отправки URL в IndexNow при большом объеме сайта WordPress
14.02.2026
Как добавить IndexNow в WordPress без плагинов: ручная интеграция и примеры кода
29.11.2025
IndexNow и кэширование в WordPress: практические советы и решения
22.12.2025
Как удалить редиректы и ошибки 404 из индекса с помощью IndexNow в WordPress
04.12.2025
IndexNow и SSL в WordPress: практические советы по устранению проблем с индексацией
17.01.2026
×
С Днём Рождения, WPshop!

Скидка 20% премиум темы
и плагины WordPress

Получи свой подарок ⋙