#php #wordpress #woocommerce #product #rating
#php #wordpress #woocommerce #продукт #Оценка
Вопрос:
Я хочу не отображать звездочки на товарах в цикле страницы магазина. Мой текущий код не работает…
Я работаю над сайтом WooCommerce с Astra.
function no_stars_if_no_reviews() {
global $product;
if ($average = $product->get_average_rating()) :
if($average > 0) {
remove_filter(get_average_rating);
}
}
Я просто хочу удалить фильтр, когда там нет отзывов, но сохранить его в противном случае. Еще раз, это для страницы товаров, а не отдельной.
Комментарии:
1. Почему назначение завернуто в if()? А вы где-нибудь определяли константу с именем
get_average_rating
? Если нет, вы, вероятно, имели в виду использовать текстовый литерал в этом месте, а не константу.2. функция no_stars_if_no_reviews() { глобальный $ продукт; $ среднее значение = $product->get_average_rating(); если ($среднее значение > 0) { remove_filter(get_average_rating);} } Будет ли это работать лучше?
3. У меня получилось! Для всех, кто там работает, это сработало! функция no_stars_if_no_reviews() { глобальный $ продукт; $среднее значение = $product->get_average_rating() ; если ($среднее значение > 3) { echo (‘<div class=»звездный рейтинг»><span style=»ширина:’.( ( $среднее значение / 5 ) * 100 ) . ‘%»>< strong itemprop=»ratingValue» class=»rating»>’.$average.'</strong> ‘.__( ‘из 5’, ‘woocommerce’).'</span></div>’); } else { return; } } add_action ( ‘astra_woo_shop_title_after’, ‘no_stars_if_no_reviews’);
Ответ №1:
Просто используйте следующее, чтобы удалить звездочки со страниц магазина и архива, если отзывов нет:
add_action( 'woocommerce_after_shop_loop_item_title', 'conditionally_remove_loop_rating', 4 );
function conditionally_remove_loop_rating(){
global $product;
if( ! ( $product->get_review_count() > 0 ) ) {
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 5 );
}
}
Код отправляется в function.php файл вашей активной дочерней темы (или active theme). Протестировано и работает.
Комментарии:
1.
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 5 );
кажется, это больше не работает. Можно заменить?2. @ВладимирКятипов Это все еще работает в последней версии WooCommerce, смотрите в
content-product.php
файле шаблона … Если у вас это не работает, это может быть связано с настройками вашей темы или плагина…3. Привет, я недавно тестировал этот код, и он не соответствует. Например, на странице категории товаров иногда у продукта нет отзывов, звездочки скрыты, но при нажатии на сам продукт на странице сведений действительно отображаются отзывы.