Как изменить URL страницы отзывов WooCommerce без плагинов

Диагностика проблемы: зачем менять URL страницы отзывов WooCommerce

По умолчанию WooCommerce использует URL вида /product/product-name/#reviews для отображения отзывов товаров. Это неудобно для SEO и пользовательского опыта, особенно если нужно выделить страницу отзывов отдельно или сделать более человекочитаемый и короткий URL. В стандартных настройках WooCommerce нет возможности изменить этот URL без плагинов.

Задача: вывести страницу с отзывами товара по отдельному URL, например, /product/product-name/reviews, или даже /reviews/product-name без плагинов.

Анализ текущей реализации WooCommerce отзывов

Отзывы в WooCommerce — это часть шаблона single-product-reviews.php, который загружается как часть страницы товара. Отзывы не имеют отдельного маршрута или кастомного типа записи.

Это значит, что чтобы изменить URL, нужно переопределить правила пермалинков и добавить кастомный endpoint для отзывов.

Пошаговое решение: добавляем endpoint для отзывов WooCommerce

1. Регистрация endpoint "reviews"

Добавьте следующий код в файл functions.php используемой темы или в собственный плагин:

add_action('init', function() {
    add_rewrite_endpoint('reviews', EP_PERMALINK | EP_PAGES);
});

Этот код регистрирует новый endpoint reviews после URL товара.

2. Обработка запроса и подмена шаблона

Чтобы при заходе по адресу /product/product-name/reviews выводились отзывы, нужно подменить шаблон страницы:

add_filter('template_include', function($template) {
    global $wp_query;
    if (isset($wp_query->query_vars['reviews'])) {
        // Путь к кастомному шаблону отзывов
        $new_template = locate_template(['woocommerce/single-product-reviews.php']);
        if ($new_template) {
            return $new_template;
        }
    }
    return $template;
});

Создайте в вашей теме папку woocommerce и скопируйте туда файл single-product-reviews.php из плагина WooCommerce. Этот шаблон будет использоваться для отдельной страницы отзывов.

3. Добавление навигации и ссылки на новую страницу отзывов

Чтобы пользователи и поисковики могли найти новую страницу, замените ссылки на отзывы в шаблоне продукта, например:

echo get_permalink() . 'reviews/';

Используйте этот URL для ссылок на страницу с отзывами.

4. Сброс правил пермалинков

После добавления endpoint нужно сбросить правила пермалинков. Сделайте это в админке WordPress: Настройки > Постоянные ссылки > Сохранить изменения без изменения настроек.

Проверка результата после внедрения

  • Перейдите по адресу /product/product-name/reviews. Должна загрузиться страница с отзывами товара без ошибок 404.
  • Проверьте, что остальные страницы товара работают как раньше.
  • Проверьте, что в HTML-коде и хлебных крошках ссылки на отзывы теперь ведут на новый URL.

Частые ошибки и их исправление

  • Ошибка 404 на /reviews/: не сброшены правила пермалинков. Перейдите в настройки пермалинков и сохраните изменения.
  • Отзывы не отображаются: проверьте, что кастомный шаблон single-product-reviews.php корректно скопирован в тему и что в нем нет ошибок.
  • URL /reviews/ конфликтует с другими правилами: убедитесь, что никому из страниц или таксономий не назначен endpoint или slug reviews.

Практические советы по производительности и безопасности

  • Endpoint добавляет минимальную нагрузку на перезапросы — не влияет существенно на производительность.
  • Проверяйте права доступа к страницам с отзывами, если у вас закрытый каталог товаров или отзывы доступны только авторизованным пользователям.
  • Для SEO стоит настроить правильные мета-теги и канонические URL для новой страницы отзывов, чтобы избежать дублирования контента.

Сравнение вариантов реализации изменения URL отзывов WooCommerce

ВариантПлюсыМинусы
Добавление endpoint и кастомного шаблона (код)Без плагинов, гибко, контролируемоТребует ручной настройки и поддержки, возможны ошибки с пермалинками
Использование плагинов для перенаправленияПросто, быстро настроитьДополнительная нагрузка, не всегда SEO-оптимально
Перенос отзывов на отдельный кастомный тип записиМаксимальная гибкостьСложно, требует серьезных изменений
⭐⭐⭐⭐⭐