IndexNow: как отправлять URL из пользовательских типов записей WordPress

IndexNow — простой и эффективный протокол для мгновенного уведомления поисковых систем об изменениях на сайте. Если вы используете в WordPress кастомные типы записей (Custom Post Types), например, портфолио, отзывы, товары или мероприятия, важно обеспечить отправку URL именно этих записей в IndexNow. В этой статье я подробно расскажу, как реализовать автоматическую отправку URL из любых пользовательских типов записей WordPress с примерами кода и рекомендациями.

Почему важно отправлять URL кастомных типов записей в IndexNow

По умолчанию многие плагины и инструменты для IndexNow ориентируются на стандартные записи (posts) и страницы (pages). Однако на современных сайтах кастомные типы записей играют ключевую роль в представлении контента. Если не настроить отправку URL таких записей, изменения в них могут долго не отражаться в поисковой выдаче из-за задержек в индексации.

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

  • Обеспечить быструю индексацию новых или обновленных материалов.
  • Избежать ошибок и устаревшей информации в поисковых системах.
  • Повысить качество и актуальность сниппетов в выдаче.

Это особенно важно для сайтов с большим объемом нестандартного контента.

Как настроить отправку URL кастомных типов записей в IndexNow

Шаг 1: Определяем, какие типы записей нужно отправлять

Для начала необходимо составить список типов записей, изменения в которых должны отслеживаться и отправляться в IndexNow. Например:

$indexnow_custom_post_types = ['portfolio', 'testimonial', 'event'];

Вы можете добавить сюда любые зарегистрированные типы записей вашего сайта.

Шаг 2: Отслеживаем публикацию и обновление записей

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

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

Для отправки URL реализуем функцию indexnow_send_url_custom_post, которая формирует и отправляет запрос на API IndexNow. Пример кода:

function indexnow_send_url_custom_post($post_id) {
    // Проверяем, чтобы это не был автосохранение
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }

    // Получаем тип записи
    $post_type = get_post_type($post_id);

    // Массив кастомных типов записей для отправки
    $custom_types = ['portfolio', 'testimonial', 'event'];

    if (!in_array($post_type, $custom_types)) {
        return; // Игнорируем остальные типы
    }

    // Получаем URL записи
    $url = get_permalink($post_id);
    if (!$url) {
        return;
    }

    // Ключ для IndexNow (укажите свой)
    $indexnow_key = 'ваш_ключ_из_IndexNow.txt';

    // Формируем URL для запроса
    $endpoint = 'https://api.indexnow.org/indexnow?';
    $params = http_build_query([
        'url' => $url,
        'key' => $indexnow_key,
    ]);

    $request_url = $endpoint . $params;

    // Отправляем запрос
    wp_remote_get($request_url);
}
add_action('save_post', 'indexnow_send_url_custom_post');

Этот код при каждом сохранении записи типа portfolio, testimonial или event отправит её URL в IndexNow.

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

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

Отправка URL при удалении записи

Для этого используем хук before_delete_post:

function indexnow_send_url_on_delete($post_id) {
    $post_type = get_post_type($post_id);
    $custom_types = ['portfolio', 'testimonial', 'event'];

    if (!in_array($post_type, $custom_types)) {
        return;
    }

    $url = get_permalink($post_id);
    if (!$url) {
        return;
    }

    $indexnow_key = 'ваш_ключ_из_IndexNow.txt';
    $endpoint = 'https://api.indexnow.org/indexnow?';
    $params = http_build_query([
        'url' => $url,
        'key' => $indexnow_key,
    ]);
    $request_url = $endpoint . $params;

    wp_remote_get($request_url);
}
add_action('before_delete_post', 'indexnow_send_url_on_delete');

Отслеживание смены статуса записи

Если запись переводится в черновик или в статус «на рассмотрении», стоит также уведомлять IndexNow о том, что URL стал неактуальным:

function indexnow_send_url_on_status_change($new_status, $old_status, $post) {
    $custom_types = ['portfolio', 'testimonial', 'event'];
    if (!in_array($post->post_type, $custom_types)) {
        return;
    }

    // Если запись стала не опубликованной
    if ($old_status === 'publish' && $new_status !== 'publish') {
        $url = get_permalink($post->ID);
        if (!$url) {
            return;
        }

        $indexnow_key = 'ваш_ключ_из_IndexNow.txt';
        $endpoint = 'https://api.indexnow.org/indexnow?';
        $params = http_build_query([
            'url' => $url,
            'key' => $indexnow_key,
        ]);
        $request_url = $endpoint . $params;

        wp_remote_get($request_url);
    }
}
add_action('transition_post_status', 'indexnow_send_url_on_status_change', 10, 3);

Советы по улучшению интеграции IndexNow с кастомными типами записей

Для более надежной работы и удобства советую учитывать следующие моменты:

  • Кэширование и задержки: При большом количестве записей лучше использовать очередь или CRON-задачи для отложенной отправки URL, чтобы не перегружать сервер.
  • Логирование запросов: Временно ведите лог успешных и неудачных запросов с помощью error_log или собственного механизма, чтобы отлавливать проблемы.
  • Проверка статуса ответа: Используйте wp_remote_get с последующей проверкой ответа сервера IndexNow, чтобы гарантировать успешную отправку.
  • Безопасность ключа: Храните ключ IndexNow в защищённом месте, например, в файле конфигурации или переменной окружения, а не в коде напрямую.
  • Поддержка новых типов: При добавлении новых кастомных типов обязательно обновляйте массив $custom_types.

Заключение

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

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

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

⭐⭐⭐⭐⭐
IndexNow в разных PHP-фреймворках: сравнение и практические примеры интеграции
02.03.2026
IndexNow оптимизация отправки URL в WooCommerce: практические решения для больших магазинов
01.04.2026
IndexNow автоматическая очистка кеша в WordPress: практическое руководство
24.01.2026
Как автоматически отслеживать изменения в метаданных WordPress и отправлять их в IndexNow
21.02.2026
IndexNow: как автоматически удалять слуги с постоянным редиректом в WordPress и обновлять индекс
14.04.2026
×
WPShop
честная партнерка!

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

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