При работе с большими сайтами на WordPress часто возникает задача массового импорта контента из внешних источников или CSV-файлов. Одной из важных задач после импорта является своевременная отправка новых или обновлённых URL в поисковую систему через протокол IndexNow для быстрой индексации. В этой статье разберём, как автоматизировать отправку URL в IndexNow именно в момент импорта контента, используя примеры кода и рекомендации по плагинам.
Почему важно интегрировать IndexNow с импортом контента
IndexNow — это современный протокол, позволяющий моментально уведомлять поисковые системы об изменениях на сайте. Если вы импортируете сотни или тысячи записей, вручную отправлять URL невозможно, а задержка может привести к потере трафика и ухудшению индексации.
Автоматизация отправки URL во время или сразу после импорта гарантирует, что именно свежий контент попадёт в индекс максимально быстро. Особенно это актуально для новостных, каталоговых и торговых сайтов.
Для WordPress есть несколько популярных способов импорта: через WP All Import, собственные скрипты на PHP или REST API. Мы рассмотрим универсальный способ, который подойдёт для любых методов.
Отправка URL в IndexNow через REST API: базовый пример
Для отправки URL нужно сделать POST-запрос на эндпоинт поисковой системы (например, Bing или Яндекс поддерживают IndexNow). В теле запроса передаётся JSON с URL.
Пример функции для отправки одного или нескольких URL в IndexNow:
function indexnow_su_send_urls_to_indexnow( array $urls ) {
$apiKey = 'ВАШ_КЛЮЧ_API_INDEXNOW';
$endpoint = 'https://api.indexnow.org/indexnow';
$payload = [
'host' => parse_url(home_url(), PHP_URL_HOST),
'key' => $apiKey,
'keyLocation' => home_url('/indexnow-key.txt'),
'urlList' => $urls
];
$args = [
'headers' => [
'Content-Type' => 'application/json'
],
'body' => wp_json_encode($payload),
'timeout' => 15
];
$response = wp_remote_post($endpoint, $args);
if (is_wp_error($response)) {
error_log('IndexNow error: ' . $response->get_error_message());
return false;
}
$code = wp_remote_retrieve_response_code($response);
if ($code !== 200) {
error_log('IndexNow HTTP code: ' . $code);
return false;
}
return true;
}Эту функцию можно использовать для отправки URL сразу после импорта каждой записи или пачки.
Как интегрировать отправку URL при импорте через WP All Import
WP All Import позволяет запускать PHP-функции после импорта записи через хуки. Можно использовать хук pmxi_after_post_import для отправки URL:
add_action('pmxi_after_post_import', function($post_id, $xml_node, $is_update) {
$url = get_permalink($post_id);
indexnow_su_send_urls_to_indexnow([$url]);
}, 10, 3);<Такой подход гарантирует, что после каждого импортированного поста его URL моментально отправится в IndexNow.
Если импорт очень большой, разумнее собирать URL в массив и отправлять пакетами по 10-20 штук, чтобы не перегружать сервер и API.
Автоматизация при кастомном импорте: пример на PHP
Если вы пишете собственный скрипт импорта, можно вызывать функцию отправки URL сразу после вставки записи в базу:
foreach ($imported_posts as $post_data) {
$post_id = wp_insert_post($post_data);
if ($post_id && !is_wp_error($post_id)) {
$url = get_permalink($post_id);
indexnow_su_send_urls_to_indexnow([$url]);
}
}Для повышения производительности можно накапливать URL в массив и отправлять пачками, например, после каждых 50 записей.
Использование плагинов для интеграции с IndexNow
Если вы не хотите писать код, рассмотрите плагины с поддержкой IndexNow и импортом:
- Clearfy Pro — умеет автоматически отправлять URL в IndexNow при изменении контента, в том числе после импорта. Можно настроить частоту и типы записей.
- Expert Review — позволяет настраивать автоматизацию для разных типов контента, включая импортированные записи.
Преимущество плагинов — удобный интерфейс и меньше рисков ошибок.
Обработка ошибок и логирование отправки URL
Для надёжности важно логировать результаты отправки. Это поможет быстро обнаружить проблемы с API ключом, сетью или форматом URL.
Рекомендуется расширить функцию отправки с записью в отдельный лог-файл или базу данных:
function indexnow_su_send_urls_to_indexnow_with_log(array $urls) {
$result = indexnow_su_send_urls_to_indexnow($urls);
$log_entry = date('Y-m-d H:i:s') . ' | URLs: ' . implode(', ', $urls) . ' | Result: ' . ($result ? 'Success' : 'Fail') . "\n";
file_put_contents(WP_CONTENT_DIR . '/indexnow-send.log', $log_entry, FILE_APPEND);
return $result;
}Это позволит отслеживать отправку и анализировать возможные сбои.
Советы по оптимизации отправки URL
Для эффективной работы с IndexNow при импорте учитывайте следующие моменты:
- Отправляйте URL пачками — так уменьшается число запросов и повышается стабильность.
- Используйте отложенную отправку через WP Cron, если импорт очень большой, чтобы не перегружать сервер.
- Проверяйте наличие и актуальность API ключа и файла
indexnow-key.txtв корне сайта. - Фильтруйте URL, исключая неиндексируемые или временные страницы.
Пример отложенной отправки через Cron
Вы можете накапливать URL в опции и отправлять их периодически:
function indexnow_su_add_url_to_queue($url) {
$queue = get_option('indexnow_su_url_queue', []);
if (!in_array($url, $queue)) {
$queue[] = $url;
update_option('indexnow_su_url_queue', $queue);
}
}
function indexnow_su_cron_send_urls() {
$queue = get_option('indexnow_su_url_queue', []);
if (empty($queue)) return;
$batch = array_splice($queue, 0, 20);
$sent = indexnow_su_send_urls_to_indexnow($batch);
if ($sent) {
update_option('indexnow_su_url_queue', $queue);
}
}
if (!wp_next_scheduled('indexnow_su_cron_send')) {
wp_schedule_event(time(), 'hourly', 'indexnow_su_cron_send');
}
add_action('indexnow_su_cron_send', 'indexnow_su_cron_send_urls');Вызов indexnow_su_add_url_to_queue($url) из процесса импорта позволит аккуратно и без нагрузки отправлять URL.
Выводы
Автоматизация отправки URL в IndexNow при импорте контента в WordPress — важный этап для быстрой индексации и улучшения SEO. Вы можете использовать готовые плагины или написать собственные решения с помощью REST API и хуков импорта. Ключевые моменты — пакетная отправка, логирование и обработка ошибок.
Для удобства работы с IndexNow рекомендуем изучить плагины на WPSHOP, где есть надёжные инструменты для автоматизации.