Как автоматизировать удаление и обновление URL в WordPress с помощью Webhooks и IndexNow

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

Что такое Webhooks и как они помогают с IndexNow

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

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

Комбинация Webhooks и IndexNow позволяет автоматически реагировать на изменения в WordPress, отправлять запросы на обновление или удаление URL без ручного вмешательства.

Настройка Webhook-обработчика в WordPress для IndexNow

Для начала нужно создать обработчик Webhook, который будет реагировать на события изменения или удаления контента. Рассмотрим пример, как это сделать с использованием стандартных хуков WordPress и отправки URL в IndexNow.

Шаг 1. Создание функции отправки URL в IndexNow

Создадим функцию indexnow_su_send_url_to_indexnow, которая будет принимать URL и тип действия (add/update или delete), и отправлять запрос на API IndexNow.

function indexnow_su_send_url_to_indexnow( $url, $action = 'update' ) {
    $api_key = 'ВАШ_КЛЮЧ_INDEXNOW'; // Получите ключ на https://www.indexnow.org
    $endpoint = 'https://api.indexnow.org/indexnow';

    $urls = [ $url ];

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

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

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

    if ( is_wp_error( $response ) ) {
        error_log( 'IndexNow API error: ' . $response->get_error_message() );
        return false;
    }

    $code = wp_remote_retrieve_response_code( $response );
    if ( $code !== 200 ) {
        error_log( 'IndexNow API returned HTTP code ' . $code );
        return false;
    }

    return true;
}

Эта функция отправляет POST-запрос с нужными параметрами в IndexNow API. Не забудьте получить и разместить ключ на вашем сайте.

Шаг 2. Реализация Webhook-слушателей для удаления и обновления URL

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

// Отправляем URL при публикации или обновлении записи
add_action( 'publish_post', 'indexnow_su_handle_post_update' );
add_action( 'publish_page', 'indexnow_su_handle_post_update' );

function indexnow_su_handle_post_update( $post_id ) {
    if ( wp_is_post_revision( $post_id ) ) return;

    $url = get_permalink( $post_id );
    indexnow_su_send_url_to_indexnow( $url, 'update' );
}

// Отправляем URL для удаления при удалении записи
add_action( 'before_delete_post', 'indexnow_su_handle_post_delete' );

function indexnow_su_handle_post_delete( $post_id ) {
    $url = get_permalink( $post_id );
    if ( $url ) {
        indexnow_su_send_url_to_indexnow( $url, 'delete' );
    }
}

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

Расширение: автоматическая отправка для пользовательских типов записей и таксономий

Если ваш сайт использует кастомные типы записей (Custom Post Types) или таксономии, необходимо добавить аналогичные обработчики для них.

// Пример для кастомного типа записи 'product'
add_action( 'publish_product', 'indexnow_su_handle_post_update' );
add_action( 'before_delete_post', function( $post_id ) {
    if ( get_post_type( $post_id ) === 'product' ) {
        indexnow_su_handle_post_delete( $post_id );
    }
} );

Для таксономий стоит реализовать отправку URL архивов или отдельных страниц таксономий, если это важно для индексации.

Использование плагинов для удобства и расширенной интеграции

Если вы не хотите писать код самостоятельно, можно использовать специализированные плагины, которые помогут интегрировать IndexNow с WordPress с поддержкой Webhooks и автоматизации:

  • Clearfy Pro — плагин для оптимизации WordPress, включающий функции интеграции с IndexNow и возможность настройки Webhook-уведомлений.
  • WPCommunity — плагин с расширенными возможностями для кастомизации событий и их обработки.

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

Отладка и мониторинг отправки Webhook и IndexNow

Чтобы отслеживать успешность отправки URL в IndexNow, рекомендуется:

  • Логировать ответы API в файл или в систему отладки WordPress (например, через error_log).
  • Добавить уведомления администраторам в случае ошибок отправки.
  • Использовать инструменты мониторинга HTTP-запросов, например Query Monitor.

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

Пример логирования с уведомлением по email

function indexnow_su_send_url_to_indexnow( $url, $action = 'update' ) {
    // ... существующий код отправки ...

    if ( is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) !== 200 ) {
        $error_message = is_wp_error( $response ) ? $response->get_error_message() : 'HTTP code ' . wp_remote_retrieve_response_code( $response );
        error_log( 'IndexNow API error: ' . $error_message );
        wp_mail( get_option( 'admin_email' ), 'IndexNow API Error', 'Ошибка отправки URL "' . $url . '": ' . $error_message );
        return false;
    }

    return true;
}

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

⭐⭐⭐⭐⭐
IndexNow автоматическое отправление изменений в WordPress: практическое руководство
11.12.2025
IndexNow и WooCommerce: решение проблем индексации товаров и страниц
25.12.2025
Отладка отправки URL в IndexNow для WordPress: практические советы и примеры
29.12.2025
IndexNow: автоматическая очистка неиспользуемых URL в WordPress
23.03.2026
Как отправлять изменения в IndexNow при использовании WP REST API в WordPress
11.04.2026
×
WPShop
честная партнерка!

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

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