IndexNow стал мощным инструментом для быстрой индексации и обновления контента в поисковых системах. В WordPress часто возникает задача не просто отправлять URL, а делать это разными способами в зависимости от условий и инфраструктуры сайта. В этой статье мы подробно рассмотрим, как реализовать различные методы отправки URL в IndexNow на WordPress с примерами кода и рекомендациями.
Почему важно использовать разные методы отправки URL в IndexNow
Каждый сайт имеет свои особенности хостинга, настройки безопасности и требований к производительности. Например, на некоторых серверах отключена функция curl, а в других может быть ограничен доступ к внешним API. Поэтому важно знать альтернативные методы отправки запросов, чтобы интеграция была максимально надежной и гибкой.
Кроме того, разные методы позволяют удобно интегрировать отправку URL в разные части кода, например, в AJAX-запросы, WP Cron или REST API. Также это помогает легко отлавливать ошибки и логировать процесс.
Метод 1: Отправка URL через cURL в WordPress
Использование cURL – классический способ отправки HTTP-запросов. Ниже пример функции indexnow_su_send_url_curl(), которая отправляет один URL в IndexNow:
function indexnow_su_send_url_curl($url, $key) {
$endpoint = 'https://api.indexnow.org/indexnow';
$payload = json_encode(['host' => parse_url($url, PHP_URL_HOST), 'key' => $key, 'keyLocation' => home_url('/indexnow-key.txt'), 'urlList' => [$url]]);
$ch = curl_init($endpoint);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error) {
error_log('IndexNow cURL error: ' . $error);
return false;
}
return $response;
}Данная функция принимает URL и ключ API, формирует JSON и отправляет POST-запрос на эндпоинт IndexNow. Если есть ошибка, она логируется.
Метод 2: Отправка URL с помощью WP HTTP API
WordPress предоставляет собственный HTTP API, который абстрагирует работу с разными методами запроса, в том числе подходит для отправки запросов к IndexNow. Этот метод более универсальный и обычно предпочтителен на WordPress-сайтах.
function indexnow_su_send_url_wp_http($url, $key) {
$endpoint = 'https://api.indexnow.org/indexnow';
$args = [
'headers' => ['Content-Type' => 'application/json'],
'body' => wp_json_encode([
'host' => parse_url($url, PHP_URL_HOST),
'key' => $key,
'keyLocation' => home_url('/indexnow-key.txt'),
'urlList' => [$url]
]),
'timeout' => 10
];
$response = wp_remote_post($endpoint, $args);
if (is_wp_error($response)) {
error_log('IndexNow WP HTTP error: ' . $response->get_error_message());
return false;
}
return wp_remote_retrieve_body($response);
}Этот способ хорошо интегрируется с WP, учитывает настройки прокси и совместим с большинством хостингов.
Метод 3: Отправка URL через REST API WordPress
Если у вас есть необходимость отправлять URL в IndexNow из внешних скриптов или фронтенда, можно создать REST API-эндпоинт в WordPress. Это позволит удобно запускать отправку через AJAX или другие системы.
add_action('rest_api_init', function () {
register_rest_route('indexnow-su/v1', '/send-url', [
'methods' => 'POST',
'callback' => 'indexnow_su_rest_send_url',
'permission_callback' => function () {
return current_user_can('manage_options');
},
]);
});
function indexnow_su_rest_send_url(WP_REST_Request $request) {
$url = $request->get_param('url');
$key = 'ваш_ключ_indexnow';
if (empty($url) || !filter_var($url, FILTER_VALIDATE_URL)) {
return new WP_Error('invalid_url', 'URL не валиден', ['status' => 400]);
}
$result = indexnow_su_send_url_wp_http($url, $key);
if ($result === false) {
return new WP_Error('send_failed', 'Не удалось отправить URL', ['status' => 500]);
}
return ['success' => true, 'response' => $result];
}Такой подход делает отправку URL более гибкой и позволяет вызывать её из административной панели или внешних сервисов.
Практические советы по интеграции и отладке
Для надежной работы интеграции с IndexNow рекомендуем:
- Всегда логировать ошибки при отправке URL — это помогает быстро выявлять проблемы с API или сетью.
- Хранить ключ IndexNow в настройках сайта или защищенном файле, а не жестко прописывать в коде.
- Использовать WP Cron для пакетной отправки URL, если у вас много обновлений и нужны ограничения по частоте запросов.
- Проверять наличие файла с ключом
indexnow-key.txtв корне сайта, это обязательный этап для подтверждения права владения.
Заключение по методам отправки URL в IndexNow
Использование разных методов отправки URL в IndexNow даёт гибкость и повышает надежность интеграции на WordPress-сайте. Если сервер поддерживает cURL — можно использовать первый метод, но чаще и удобнее применять WP HTTP API. REST API подходит для создания удобных интерфейсов и автоматизации. Важно тщательно тестировать все методы и логировать ошибки.
Если вы хотите расширить функционал отправки URL, советуем обратить внимание на плагины, например, Clearfy Pro, который помогает оптимизировать индексацию и автоматизировать задачи, связанные с IndexNow и SEO в целом.