IndexNow — это быстрый и эффективный протокол для уведомления поисковых систем об изменениях на вашем сайте. В предыдущих статьях мы подробно разбирали интеграцию с постами и стандартными типами записей WordPress, но что делать, если на сайте активно используются пользовательские таксономии? В этой статье мы разберём, как автоматизировать отправку URL именно для них, чтобы своевременно индексировать категории, метки и другие таксономии, созданные вручную.
Почему важно отправлять URL пользовательских таксономий в IndexNow
Пользовательские таксономии часто содержат ценный контент и фильтрующие страницы, которые влияют на SEO. Если поисковики не получают уведомления об их обновлении, индексация таких страниц может задерживаться, что негативно скажется на видимости сайта.
Кроме того, таксономии могут меняться динамически — например, при добавлении новых терминов или изменении описаний. Автоматизация отправки URL по протоколу IndexNow для таких изменений помогает ускорить обновление индекса в поисковых системах, таких как Яндекс и Bing.
В итоге, вы обеспечиваете актуальность поисковой выдачи и улучшаете пользовательский опыт для посетителей.
Как реализовать автоматическую отправку URL пользовательских таксономий в WordPress с IndexNow
Для начала, напомню, что стандартные плагины для IndexNow не всегда поддерживают пользовательские таксономии по умолчанию. Поэтому потребуется небольшая доработка кода.
Основная идея — перехватывать события изменения таксономий (создание/обновление терминов) и отправлять соответствующие URL на сервер IndexNow.
Шаг 1: Получение URL терминов пользовательских таксономий
Для каждой пользовательской таксономии нужно получить URL терминов, используя функцию WordPress get_term_link(). Например:
function indexnow_su_get_custom_taxonomy_term_urls() {
$urls = [];
$taxonomies = get_taxonomies(['_builtin' => false], 'names'); // Получаем все кастомные таксономии
foreach ($taxonomies as $taxonomy) {
$terms = get_terms(['taxonomy' => $taxonomy, 'hide_empty' => false]);
if (!empty($terms) && !is_wp_error($terms)) {
foreach ($terms as $term) {
$link = get_term_link($term);
if (!is_wp_error($link)) {
$urls[] = $link;
}
}
}
}
return $urls;
}
Эта функция собирает все URL терминов для всех пользовательских таксономий.
Шаг 2: Отправка URL в IndexNow
Далее нужно реализовать функцию отправки URL. Для примера возьмём простой запрос c использованием wp_remote_post:
function indexnow_su_send_urls_to_indexnow($urls) {
$key = 'ВАШ_КЛЮЧ_INDEXNOW';
$endpoint = 'https://api.indexnow.org/indexnow';
$payload = [
'host' => parse_url(home_url(), PHP_URL_HOST),
'key' => $key,
'keyLocation' => home_url('/indexnow_key.txt'),
'urlList' => $urls
];
$response = wp_remote_post($endpoint, [
'headers' => ['Content-Type' => 'application/json'],
'body' => json_encode($payload)
]);
if (is_wp_error($response)) {
error_log('IndexNow: Ошибка отправки URL - ' . $response->get_error_message());
return false;
}
return true;
}
Обратите внимание, что ключ и файл indexnow_key.txt должны быть заранее созданы и размещены в корне сайта согласно требованиям IndexNow.
Шаг 3: Автоматизация отправки при изменении таксономий
Чтобы отправлять URL автоматически, нужно повесить вызов отправки на соответствующие хуки WordPress, например, created_term и edited_term:
add_action('created_term', 'indexnow_su_send_taxonomy_url_on_change', 10, 3);
add_action('edited_term', 'indexnow_su_send_taxonomy_url_on_change', 10, 3);
function indexnow_su_send_taxonomy_url_on_change($term_id, $tt_id, $taxonomy) {
if (taxonomy_exists($taxonomy) && !is_taxonomy_hierarchical($taxonomy)) {
$term = get_term($term_id, $taxonomy);
if (!is_wp_error($term)) {
$url = get_term_link($term);
if (!is_wp_error($url)) {
indexnow_su_send_urls_to_indexnow([$url]);
}
}
}
}
Этот код отлавливает создание и редактирование терминов и отправляет URL изменённой таксономии в IndexNow.
Дополнительные рекомендации по работе с IndexNow и таксономиями
1. Кэширование: Если у вас большой сайт с тысячами терминов, не стоит отправлять все URL при каждом изменении. Лучше реализовать очередь или пакетную отправку через Cron.
2. Отслеживание ошибок: Логируйте ответы сервера IndexNow, чтобы контролировать успешность отправки.
3. Фильтрация таксономий: Иногда полезно исключить из отправки технические или неиндексируемые таксономии, чтобы не расходовать лимиты.
Пример интеграции с плагином Clearfy Pro для управления таксономиями
Плагин Clearfy Pro позволяет тонко настраивать индексацию таксономий, отключая лишние из индекса и оптимизируя SEO. В связке с нашим кодом по отправке URL для IndexNow вы получаете полный контроль над индексацией и быструю реакцию поисковиков на изменения.
Вывод
Автоматическая отправка URL пользовательских таксономий в IndexNow — важный шаг для ускорения индексации и улучшения SEO. С помощью приведённых примеров кода вы легко интегрируете эту функциональность в свой WordPress-сайт, повысите релевантность поисковой выдачи и улучшите поведенческие метрики.