Если у вас интернет-магазин на базе WooCommerce, одной из частых проблем становится корректная индексация товаров и страниц в поисковых системах. IndexNow — современный протокол, который позволяет поисковым системам оперативно узнавать об изменениях на сайте. В этой статье подробно разберём, как решить проблемы индексации WooCommerce с помощью IndexNow, а также приведём примеры кода и полезных плагинов для интеграции.
Почему стандартная индексация WooCommerce может работать неэффективно
WooCommerce генерирует множество динамических страниц: категории, атрибуты, фильтры, страницы товаров и пр. Поисковики зачастую получают устаревшую информацию или не сразу узнают об удалении товаров и изменениях. Это приводит к появлению битых ссылок, дублированию контента и снижению позиций.
Стандартные методы — sitemap.xml и robots.txt — важны, но не дают мгновенной синхронизации. IndexNow позволяет автоматически уведомлять поисковики о любых изменениях URL, что критично для интернет-магазинов с частыми обновлениями ассортимента.
Особенности интеграции IndexNow с WooCommerce
Для работы с WooCommerce через IndexNow нужно учитывать:
- Массовое обновление товаров (добавление, удаление, изменение цен и описаний)
- Изменения категорий, тегов, атрибутов товаров
- Автоматическое уведомление поисковиков о новых и удалённых URL
- Избежание повторных или лишних запросов для экономии ресурсов
Управлять этим можно как через готовые плагины, так и с помощью кастомных решений на PHP.
Пример отслеживания изменений товара WooCommerce и отправки URL в IndexNow
Ниже пример кода на PHP, который автоматически отправляет URL товара в IndexNow при его обновлении или публикации:
add_action('save_post_product', 'indexnowsu_send_product_url', 10, 3); function indexnowsu_send_product_url($post_ID, $post, $update) { if ($post->post_status !== 'publish') return; $url = get_permalink($post_ID); $key = 'ваш_ключ_IndexNow'; $host = parse_url(site_url(), PHP_URL_HOST); $endpoint = 'https://' . $host . '/indexnow?url=' . rawurlencode($url) . '&key=' . $key; wp_remote_get($endpoint); }Этот код следует добавить в functions.php вашей темы или в кастомный плагин. Не забудьте заменить ваш_ключ_IndexNow на ваш реальный ключ, полученный от поисковых систем.
Плагины для интеграции IndexNow с WooCommerce
Если вы предпочитаете готовые решения, обратите внимание на следующие плагины:
- IndexNow WooCommerce Integration — плагин, который автоматически отправляет изменённые URL товаров и категорий при их обновлении.
- Clearfy Pro — многофункциональный оптимизатор WordPress с поддержкой IndexNow и дополнительными инструментами для SEO и ускорения загрузки.
Использование плагинов облегчает настройку и позволяет избежать ошибок в реализации собственного кода, особенно если у магазина большой ассортимент.
Настройка Cron для регулярной отправки изменений
Иногда полезно не только отправлять URL сразу после изменений, но и периодически пересылать список изменённых и удалённых страниц. Для этого можно настроить Cron задачу в WordPress.
if (!wp_next_scheduled('indexnowsu_cron_send_urls')) { wp_schedule_event(time(), 'hourly', 'indexnowsu_cron_send_urls'); } add_action('indexnowsu_cron_send_urls', 'indexnowsu_send_batch_urls'); function indexnowsu_send_batch_urls() { $urls = get_option('indexnowsu_urls_to_send', []); $key = 'ваш_ключ_IndexNow'; $host = parse_url(site_url(), PHP_URL_HOST); foreach ($urls as $url) { $endpoint = 'https://' . $host . '/indexnow?url=' . rawurlencode($url) . '&key=' . $key; wp_remote_get($endpoint); } update_option('indexnowsu_urls_to_send', []); }Этот код создаёт ежечасную задачу, которая отправляет накопленные URL и очищает список. Добавляйте новые URL в опцию indexnowsu_urls_to_send при изменениях товаров.
Решение проблем с удалением и скрытием товаров
При удалении или скрытии товаров важно не допустить попадания их URL в индекс поисковиков. IndexNow поддерживает отправку URL с флагом удаления.
Для этого используйте следующий пример отправки URL на удаление:
function indexnowsu_delete_product_url($post_ID) { $url = get_permalink($post_ID); $key = 'ваш_ключ_IndexNow'; $host = parse_url(site_url(), PHP_URL_HOST); $endpoint = 'https://' . $host . '/indexnow'; $body = json_encode(['url' => $url, 'action' => 'delete']); wp_remote_post($endpoint, [ 'headers' => ['Content-Type' => 'application/json'], 'body' => $body, ]); } add_action('before_delete_post', 'indexnowsu_delete_product_url');Этот код отправляет поисковикам информацию о том, что указанный URL нужно удалить из индекса.
Тонкости работы с кэшированием и SEO-плагинами
В WooCommerce часто используются кэш и SEO-плагины (Yoast, Rank Math). Не забывайте синхронизировать отправку IndexNow с очисткой кэша, чтобы поисковики получали актуальные страницы.
Например, после очистки кэша можно триггерить повторную отправку URL:
add_action('after_rocket_clean_domain', 'indexnowsu_resend_all_urls'); function indexnowsu_resend_all_urls() { // логика по отправке всех важных URL } Также проверьте, что SEO-плагины не блокируют важные страницы в robots.txt или мета-тегах.
Выводы и рекомендации
Использование IndexNow в связке с WooCommerce значительно ускоряет обновление индекса поисковых систем и поддерживает актуальность данных. Ключевые шаги:
- Автоматизируйте отправку URL при изменениях товаров и категорий
- Обрабатывайте удаление и скрытие товаров с отправкой флага delete
- Используйте Cron для периодической отправки изменений
- Учитывайте особенности кэширования и SEO-плагинов
- При необходимости применяйте готовые плагины для удобства и надежности
Если хотите глубже оптимизировать WooCommerce и WordPress, рекомендуем обратить внимание на тему Reboot и Clearfy Pro, которые помогут улучшить производительность и SEO.