Как использовать хуки WooCommerce для кастомизации отзывов на товары

Диагностика задачи: зачем кастомизировать отзывы WooCommerce

Отзывы о товарах в WooCommerce — важный элемент доверия клиентов и SEO. Однако стандартный вывод отзывов не всегда подходит под дизайн или бизнес-логику магазина. Часто необходимо изменить форму отзыва, добавить новые поля, изменить порядок или внешний вид комментариев, либо изменить текстовые сообщения. Для этого WooCommerce и WordPress предоставляют гибкие хуки и фильтры.

Какие хуки WooCommerce отвечают за отзывы

Основные хуки для кастомизации отзывов находятся в шаблоне single-product/review.php, а также используются стандартные WordPress хуки комментариев. Вот ключевые из них:

  • woocommerce_product_review_list_args — фильтр аргументов вывода списка отзывов.
  • comment_form_defaults — фильтр для настройки формы комментариев.
  • comment_form_fields — позволяет изменить поля в форме отзыва.
  • woocommerce_review_before_comment_meta и woocommerce_review_after_comment_meta — добавление контента вокруг мета отзывов.
  • woocommerce_review_before_comment_text и woocommerce_review_after_comment_text — добавление контента вокруг текста отзыва.

Пошаговое решение: добавляем поле "Плюсы и минусы" в форму отзыва

Для примера добавим два новых поля — "Плюсы" и "Минусы" — в форму отзыва и сохраним их как мета-данные комментария.

Шаг 1. Добавляем поля в форму отзыва

add_filter('comment_form_fields', function($fields) {
    $fields['pros'] = '<p class="comment-form-pros"><label for="pros">Плюсы</label><textarea id="pros" name="pros" cols="45" rows="2"></textarea></p>';
    $fields['cons'] = '<p class="comment-form-cons"><label for="cons">Минусы</label><textarea id="cons" name="cons" cols="45" rows="2"></textarea></p>';
    // Перемещаем новые поля в конец формы
    $new_fields = [];
    foreach (['author', 'email', 'pros', 'cons', 'comment'] as $key) {
        if (isset($fields[$key])) {
            $new_fields[$key] = $fields[$key];
        }
    }
    return $new_fields;
});

Шаг 2. Сохраняем данные при отправке отзыва

add_action('comment_post', function($comment_id) {
    if (isset($_POST['pros'])) {
        update_comment_meta($comment_id, 'pros', sanitize_textarea_field($_POST['pros']));
    }
    if (isset($_POST['cons'])) {
        update_comment_meta($comment_id, 'cons', sanitize_textarea_field($_POST['cons']));
    }
});

Шаг 3. Выводим новые поля в списке отзывов

add_action('woocommerce_review_before_comment_text', function($comment) {
    $pros = get_comment_meta($comment->comment_ID, 'pros', true);
    $cons = get_comment_meta($comment->comment_ID, 'cons', true);
    if ($pros) {
        echo '<p class="review-pros"><strong>Плюсы:</strong> ' . esc_html($pros) . '</p>';
    }
    if ($cons) {
        echo '<p class="review-cons"><strong>Минусы:</strong> ' . esc_html($cons) . '</p>';
    }
});

Проверка результата

  1. Откройте страницу товара с активными отзывами.
  2. Нажмите кнопку оставить отзыв — форма должна содержать новые поля "Плюсы" и "Минусы".
  3. Отправьте отзыв, заполнив новые поля.
  4. В блоке отзывов под товаром у нового отзыва должны появиться введённые плюсы и минусы.

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

  • Поле не сохраняется: Проверьте, что comment_post хук зарегистрирован правильно и данные передаются с полями с совпадающими именами (name="pros" и name="cons").
  • Новые поля не отображаются в форме: убедитесь, что фильтр comment_form_fields не перезаписывается другими плагинами или темой. Попробуйте временно отключить сторонние расширения.
  • HTML-теги в отзывах отображаются некорректно: используйте esc_html() при выводе, чтобы избежать XSS и сохранить безопасность.

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

  • Всегда очищайте пользовательский ввод через sanitize_textarea_field() или аналогичные функции, чтобы избежать XSS и инъекций.
  • Для вывода используйте esc_html() или esc_attr() в зависимости от контекста.
  • Добавляйте новые поля только при необходимости, чтобы не перегружать форму и базу данных.
  • Используйте кеширование отзывов, если на сайте много комментариев, чтобы снизить нагрузку на сервер.

Сравнение способов кастомизации отзывов WooCommerce

СпособПлюсыМинусыКогда использовать
Использование хуков и фильтров (код)Гибкость, контроль, отсутствие зависимостейТребует знаний PHP, возможны ошибки при неправильном кодеДля сложных или уникальных изменений
Плагины для отзывовПростота настройки, готовые функцииМогут конфликтовать, дополнительные нагрузкиДля быстрых изменений без программирования
Редактирование шаблонов темыПолный контроль над выводомТребует поддержки при обновленияхКогда нужна глубокая кастомизация дизайна
Как удалить пустые meta данные в WordPress для ускорения сайта
09.04.2026
Как избежать проблем с базой данных при миграции WordPress
22.01.2026
Как использовать хуки в WordPress: практические примеры и создание своих хуков
22.11.2025
Как удалить категорию со всеми записями в WordPress: эффективные методы и примеры кода
04.02.2026
Как настроить отзывы в WordPress с помощью плагинов и кода
13.12.2025