Вопрос или проблема
Я бы хотел изменить порядок отображения отзывов на странице отдельного продукта. В данный момент они отображаются в порядке возрастания, и нам нужно, чтобы они были в порядке убывания (от самых новых к старым). Я посмотрел файл review.php, но, кажется, в нем нет порядка сортировки. Если вы могли бы направить меня в правильном направлении или предложить альтернативное решение, я был бы очень признателен.
Спасибо.
Вопросы по WooCommerce не относятся к теме, но поскольку отзывы всего лишь комментарии, я думаю, мы можем утверждать, что изменение порядка комментариев все еще актуально.
wp_list_comments()
имеет параметр reverse_top_level
, который устанавливает самые последние комментарии первыми и идет в обратном порядке. Если он работает так, как я думаю, вам нужно будет добавить этот параметр в wp_list_comments()
WooCommerce.
К счастью, фильтр доступен для аргументов wp_list_comments()
, которые используются в шаблоне single-product-reviews.php
.
<ol class="commentlist">
<?php wp_list_comments( apply_filters( 'woocommerce_product_review_list_args', array( 'callback' => 'woocommerce_comments' ) ) ); ?>
</ol>
Итак, чтобы добавить новые аргументы, процесс фильтрации такой же, как обычно:
function wpa_filter_list_comments($args){
$args['reverse_top_level'] = true;
return $args;
}
add_filter( 'woocommerce_product_review_list_args', 'wpa_filter_list_comments' );
Это сработало для меня!
Из панели управления WordPress перейдите в Настройки, Обсуждения и установите опцию “Комментарии должны отображаться с [старые] комментарии наверху каждой страницы” на “Новые”.
Теперь в Woocommerce последние отзывы продуктов наверху!
Ответ или решение
Для решения задачи сортировки отзывов по дате на странице товаров в WooCommerce, необходимо внести некоторые изменения в параметры, используемые для отображения комментариев. По умолчанию, WooCommerce выводит отзывы в порядке возрастания, что означает, что самые старые отзывы отображаются первыми. Однако в некоторых случаях более логичным и полезным может быть отображение самых новых отзывов в начале списка. Для этого предлагается использовать возможности WordPress для изменения порядка вывода комментариев.
Теория:
В WordPress отзывы товаров в WooCommerce обрабатываются как комментарии. Это означает, что мы можем воспользоваться существующими функциями WordPress для управления порядком вывода комментариев. Ключевой функцией здесь является wp_list_comments()
, которая отвечает за вывод всех комментариев. Один из параметров этой функции — reverse_top_level
, дозволяет изменять порядок отображения: при значении true
сначала будут выведены самые новые комментарии.
К счастью, WooCommerce предоставляет фильтр woocommerce_product_review_list_args
, который позволяет изменять аргументы, передаваемые в wp_list_comments()
. Это значит, что мы можем использовать этот фильтр для настройки необходимых параметров без необходимости вносить изменения в ядро плагина или шаблоны, что соответствует лучшим практикам.
Пример:
В файле шаблона single-product-reviews.php
используется следующий синтаксис для вывода списка комментариев:
<ol class="commentlist">
<?php wp_list_comments( apply_filters( 'woocommerce_product_review_list_args', array( 'callback' => 'woocommerce_comments' ) ) ); ?>
</ol>
Для изменения порядка вывода достаточно добавить пользовательскую функцию через фильтр:
function customize_woocommerce_review_order($args) {
$args['reverse_top_level'] = true;
return $args;
}
add_filter( 'woocommerce_product_review_list_args', 'customize_woocommerce_review_order' );
Эта функция настроит параметры для отображения комментариев так, что отзывы на продукт будут показываться в обратном порядке — от самых новых к самым старым.
Применение:
Чтобы применить изменения:
- Откройте панель управления WordPress.
- Перейдите в меню "Внешний вид" → "Редактор тем" или используйте специальный плагин для вставки пользовательских сниппетов кода, чтобы изменения остались даже при обновлении темы.
- Добавьте представленный код в файл
functions.php
вашей активной темы.
Таким образом, вы настраиваете вывод отзывов без вмешательства во внутреннюю логику WooCommerce, сохраняя возможность получать обновления плагина и темы в будущем. Это не только удобно, но и безопасно с точки зрения обновлений системы.
Важно: Помимо изменения кода, в настройках WordPress можно установить порядок отображения комментариев. Для этого пройдите в "Настройки" → "Обсуждение" и измените настройку "Комментарии должны выводиться с [более старые] комментарии на каждой странице" на "Новые", чтобы в WooCommerce отзывы были отсортированы от самых новых к самым старым без необходимости вмешательства в код.
Используя данные подходы, вы добьетесь более адаптивного и пользовательски-ориентированного отображения отзывов в вашем интернет-магазине на базе WooCommerce, что может косвенно повлиять на пользовательский опыт и потенциально повысить уровень конверсии благодаря актуальной информации на первых позициях.