Проблема повторяющихся URL в WooCommerce при фильтрации по атрибутам
При использовании атрибутов для фильтрации товаров в WooCommerce часто возникает ситуация, когда ссылки на одни и те же товары дублируются с разными параметрами, например, ?filter_color=red и ?filter_size=red, или когда один и тот же товар доступен по разным URL с параметрами фильтра. Это негативно влияет на SEO, так как поисковые системы воспринимают такие страницы как дублированный контент.
Диагностика проблемы
Чтобы проверить наличие дублирующихся ссылок на сайте, выполните следующие шаги:
- Используйте консольные инструменты вроде Screaming Frog SEO Spider или онлайн-сервисы для аудита сайта.
- Проверьте, что URL с разными параметрами фильтров ведут на одно и то же содержимое.
- Убедитесь, что в заголовках HTTP присутствует статус 200 для таких URL, а не 301 или 404.
- Оцените файл
robots.txtи метатегиnoindexдля фильтрованных страниц.
Пошаговое решение: настройка canonical URL и исключение из индексации
1. Добавление правильных канонических ссылок
WooCommerce и WordPress по умолчанию не всегда корректно выставляют canonical URL для страниц с параметрами фильтра. Чтобы исправить это, добавим фильтр в functions.php вашей темы или в кастомный плагин:
add_filter('wpseo_canonical', function($canonical) {
if (is_product_category() || is_shop()) {
// Убираем параметры фильтра из канонического URL
$url = remove_query_arg(array('filter_color', 'filter_size', 'filter_brand'), $canonical);
return esc_url_raw($url);
}
return $canonical;
});В этом примере мы удаляем параметры filter_color, filter_size и filter_brand из канонического URL, чтобы поисковики понимали, что это одна и та же страница.
2. Добавление метатега noindex для страниц с фильтрами
Чтобы полностью исключить из индексации страницы с параметрами фильтра, можно добавить следующий код:
add_action('wp_head', function() {
if (is_product_category() || is_shop()) {
$params = array('filter_color', 'filter_size', 'filter_brand');
foreach ($params as $param) {
if (!empty($_GET[$param])) {
echo '<meta name="robots" content="noindex, follow">';
break;
}
}
}
});Этот код вставляет в <head> метатег noindex на страницах с активными фильтрами, не мешая при этом переходу по ссылкам.
Проверка результата после внедрения
- Откройте страницу категории и примените фильтр. В исходном коде страницы должен отсутствовать параметр фильтра в каноническом URL.
- На странице с фильтром в <head> должен появиться метатег
<meta name="robots" content="noindex, follow">. - Повторный аудит сайта с помощью Screaming Frog должен показать уменьшение числа дублированных URL.
Частые ошибки и как их исправить
- Ошибка: Параметры фильтра не удаляются из canonical, т.к. используются нестандартные имена GET-параметров.
Решение: Проверьте точные имена параметров фильтра в URL и добавьте их в массив в коде. - Ошибка: Метатег noindex не показывается на страницах с фильтрами.
Решение: Убедитесь, что код добавлен в правильный хукwp_headи что параметры действительно присутствуют в$_GET. - Ошибка: Плагин SEO (Yoast, Rank Math) переопределяет канонический URL.
Решение: Используйте соответствующие фильтры плагина SEO или настройте исключения в его настройках.
Практические советы по улучшению SEO и производительности
- Регулярно проверяйте сайт на наличие дублированных URL с помощью SEO-сканеров.
- Используйте кеширование страниц, чтобы уменьшить нагрузку при фильтрации.
- Минимизируйте количество параметров в URL фильтрации, объединяя атрибуты или используя фильтры AJAX с History API.
- Рассмотрите возможность использования специализированных плагинов для SEO-оптимизации WooCommerce, например Clearfy Pro, которые помогают управлять метаинформацией и дублирующимся контентом.
Сравнение подходов: код vs плагины
| Метод | Плюсы | Минусы |
|---|---|---|
| Самописный код | Полный контроль, легковесность, не зависит от обновлений плагинов | Требует навыков программирования, риск ошибок при изменениях WooCommerce |
| Плагины SEO (Yoast, Rank Math) | Простота настройки, интеграция с другими функциями SEO | Избыточность, возможные конфликты с другими плагинами, нагрузка на сайт |
| Специализированные плагины (Clearfy Pro) | Автоматизация, комплексные решения для SEO и оптимизации | Платные, могут быть избыточными для простых задач |