Отзывы в Woocommerce как на маркетплейсе

Установите плагин Customer Reviews for WooCommerce

Чтобы добавить форму отзывов на страницу товара, вставьте шорткод

[ cusrev_all_reviews sort=»DESC»
sort_by=»date»
per_page=»10″
show_summary_bar=»true»
show_media=»true»
show_products=»false»
categories=»»
product_tags=»»
tags=»»
products=»current»
product_reviews=»true»
shop_reviews=»false»
inactive_products=»true»
show_replies=»true»
show_more=»8″
min_chars=»0″
avatars=»standard»
users=»all»
add_review=»true» ]

В плагине на странице шорткоды есть подробная инструкция.

Я добавила немного css, чтобы сделать симпатичнее. Вот так это будет выглядеть.

snimok jekrana 2025 10 24 v 12.19.13
snimok jekrana 2025 10 24 v 12.21.37

Чтобы добавить Вопросы о товаре, вставьте шорткод [ cusrev_qna ]

Если добавить немного css, вот так это будет выглядеть:

snimok jekrana 2025 10 24 v 12.29.18
snimok jekrana 2025 10 24 v 12.30.37

Есть тут небольшая хитрость! В настройках плагина, кто может оставлять отзывы и вопросы, обычно выбирают только авторизованные клиенты. Но вот в форме оставить отзыв есть поле Имя Фамилия и email, данные подтягиваются из аккаунта, но их можно поменять. Также клиент может не так понять и не удалить свою фамилию, а она отобразиться. Ну кому это понравится.

Поэтому css просто скройте поля с именем и почтой. А чтобы вместо фамилии отображалась только буква с точкой, например, Саша А., добавьте в дочернюю тему код. Можно конечно и на страницу товара js-код добавить, но лучше в дочернюю, так как у вас же много страниц товаров.

Создайте в дочерней теме файл ../public_html/wp-content/themes/hello-elementor-child/js/cr-name-format.js

Назовём файл cr-name-format.js и вставьте туда код:

(function(){
  function formatName(full){
    full = (full || '').trim();
    if (!full) return '';
    var p = full.split(/\s+/);
    var first = p[0], last = p.length > 1 ? p[p.length - 1] : '';
    return last ? (first + ' ' + last.charAt(0) + '.') : first; // Саша А.
  }
  function normalizeInput(inp){
    if (!inp) return;
    var v = formatName(inp.value);
    if (v && inp.value !== v) inp.value = v;
    var def = inp.getAttribute('data-defval');
    if (def !== null) {
      var vDef = formatName(def);
      if (def !== vDef) inp.setAttribute('data-defval', vDef);
    }
  }
  function apply(scope){
    (scope || document).querySelectorAll(
      'input[name="cr_review_form_name"], input[name="cr_qna_form_name"]'
    ).forEach(normalizeInput);
  }

  // Первичный запуск
  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', function(){ apply(document); });
  } else {
    apply(document);
  }
  // Подстраховка (если плагин подставит позже)
  setTimeout(function(){ apply(document); }, 300);

  // Повторяем при кликах, которые обычно открывают/перерисовывают форму
  document.addEventListener('click', function(e){
    if (e.target.closest('.cr-qna-ask-button, .cr-review-form-submit, .cr-qna-list-block button, .cr-qna-list-block a')) {
      setTimeout(function(){ apply(document); }, 0);
      setTimeout(function(){ apply(document); }, 300);
    }
  });
})();

Подключим этот код. В файле functions.php добавьте

<?php
// Подключаем стили родителя
add_action('wp_enqueue_scripts', function () {
    wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');
}, 5);

// Подключаем скрипт форматирования имени ТОЛЬКО на странице товара
add_action('wp_enqueue_scripts', function () {
    if ( function_exists('is_product') && ! is_product() ) {
        return; // грузим только на single product
    }
    $path = get_stylesheet_directory() . '/js/cr-name-format.js';
    wp_enqueue_script(
        'cr-name-format',
        get_stylesheet_directory_uri() . '/js/cr-name-format.js',
        array(),
        file_exists($path) ? filemtime($path) : '1.0.0',
        true // в футер
    );
}, 20);

Есть ещё небольшая хитрость. Можно убрать «Обозреватель» в отзывах, если клиент написал отзыв, но не было покупки. Добавьте просто сниппет-код:

//-----Убираем текст "Обозреватель" в отзывах-----
add_filter('gettext', function($translated, $text, $domain){
    if ($domain === 'customer-reviews-woocommerce') {
        if ($text === 'Reviewer' || $translated === 'Обозреватель') {
            return '';
        }
    }
    return $translated;
}, 10, 3);

Как будет отображаться надпись «Реальный покупатель» можно задать в настройках плагина.

Также в данном плагине можно настроить уведомление оставить отзыв на почту, например, через 5 дней после покупки и т.д.

Picture of Автор: Александра

Автор: Александра

@avsalexandra
Занимаюсь натуральным питанием собак и кошек BARF. Wordpress для души ☺️

Crocoblock
Elementor
Gutenberg
Jetengine
Jetformbuilder
profile builder
Woocommerce
Wordpress
WYSIWYG
Лейка
#публикация постов
#видео
#доменная почта
#рассылка
#бейдж
#благотворительность
#заказ ожидает
#подарок
#подчёркивание
#vk
#автосохранение
#пожертвования
#мультивыбор
#роли
#drag and drop
#изображения товаров
#подписки
#цена
#отменить заказ
#самозанятый
#чеки
#мой налог
#alt text
#галерея товара
#возврат
#видео товара
Комментарии:

Добавить комментарий