Диагностика проблемы с отправкой URL при импорте в WordPress
Импорт большого объема контента в WordPress — частая задача, особенно при миграции или массовом обновлении данных. При этом важна своевременная отправка URL в IndexNow для быстрого обновления индекса поисковых систем. Однако стандартные интеграции IndexNow часто срабатывают на события сохранения записи, а массовый импорт через инструменты типа WP All Import или собственные скрипты не всегда активирует эти хуки.
Основные признаки проблемы:
- URL новых импортированных страниц не появляются в отчетах отправки IndexNow;
- Отсутствие уведомлений об ошибках, но данные не индексируются;
- Отправка происходит только после ручного обновления записи в админке.
Пошаговое решение: автоматическая отправка URL при импорте
1. Подключение действий в процессе импорта
Большинство плагинов импорта позволяют запускать кастомные функции после импорта каждой записи. Если вы используете WP All Import, можно использовать хук pmxi_saved_post. Для кастомных скриптов — вызывать функцию отправки IndexNow вручную после сохранения записи.
2. Функция отправки URL в IndexNow
Пример функции для отправки одного URL, которую можно вызывать из импорта:
function send_url_to_indexnow( $url ) {
$indexnow_key = 'ваш_ключ_IndexNow';
$endpoint = 'https://api.indexnow.org/indexnow?url=' . urlencode( $url ) . '&key=' . $indexnow_key;
$response = wp_remote_get( $endpoint, [
'timeout' => 5,
'sslverify' => true,
]);
if ( is_wp_error( $response ) ) {
error_log( 'IndexNow send error: ' . $response->get_error_message() );
return false;
}
$code = wp_remote_retrieve_response_code( $response );
return $code === 200;
}3. Интеграция с WP All Import
Добавьте следующий код в functions.php вашей темы или в кастомный плагин. Он автоматически отправит URL после каждого импортированного поста:
add_action( 'pmxi_saved_post', 'indexnow_send_url_after_import', 10, 1 );
function indexnow_send_url_after_import( $post_id ) {
$url = get_permalink( $post_id );
if ( $url ) {
send_url_to_indexnow( $url );
}
}4. Автоматизация для собственных скриптов импорта
Если импорт реализован вручную, вставьте вызов send_url_to_indexnow() после успешного сохранения записи в БД:
// После wp_insert_post или wp_update_post
$post_id = wp_insert_post( $post_data );
if ( ! is_wp_error( $post_id ) ) {
$url = get_permalink( $post_id );
send_url_to_indexnow( $url );
}Проверка результата после внедрения
- Проверьте логи ошибок сервера на предмет сообщений о неудачной отправке;
- Используйте инструменты IndexNow (например, https://www.bing.com/webmaster/tools/indexnow) для проверки статуса отправленных URL;
- Проверьте, что URL импортированных страниц отображаются в панели отправки IndexNow;
- Обновите любую импортированную запись вручную для сравнения — должна ли отправка происходить автоматически тоже.
Частые ошибки и как их исправить
- Отсутствие ключа IndexNow или неправильный ключ: Убедитесь, что ключ в коде совпадает с зарегистрированным в системе поисковика.
- Неправильный формат URL: Используйте
get_permalink()для получения правильного абсолютного URL. - Отсутствие SSL или проблемы с валидацией сертификатов: В
wp_remote_getпараметрsslverifyдолжен бытьtrue, если сервер правильно настроен. - Превышение лимита запросов IndexNow: Обрабатывайте отправку пакетами или с задержкой, если импорт очень большой.
Практические советы по безопасности и производительности
- Кэширование ключа: Храните ключ IndexNow как постоянную опцию
update_option('indexnow_key', 'ваш_ключ'), не захардкоживайте в коде. - Обработка ошибок: Логируйте ошибки отправки для последующего анализа, но не останавливайте процесс импорта из-за них.
- Пакетная отправка URL: При импорте более 100 URL лучше отправлять их пачками, используя API IndexNow для массовой отправки.
- Использование WP-Cron: Для снижения нагрузки запускайте отправку URL из очереди по расписанию.
Сравнение вариантов интеграции IndexNow при импорте контента
| Метод | Плюсы | Минусы | Компромисс |
|---|---|---|---|
Хук WP All Import (pmxi_saved_post) | Простая интеграция, автоматическая отправка после каждой записи | При большом объеме может создавать много запросов | Добавить очередь и пакетную отправку URL |
| Встроенный вызов в кастомных скриптах | Полный контроль, можно оптимизировать под логику импорта | Требует доработки и тестирования | Использовать WP-Cron для отложенной отправки |
| Плагины для IndexNow (готовые решения) | Упрощают настройку, поддерживают массовую отправку | Могут не покрывать все сценарии импорта | Комбинировать с кастомными вызовами при необходимости |