Проблема: В WooCommerce рейтинг товаров выводится только когда у товара есть отзывы с оценкой товара. Нам требуется вывести рейтинг звезд товаров даже если товар еще не оценен. Т.е. Будет пустой рейтинг.
Решение: Для принудительного вывода звездного рейтинга товаров в каталоге / категориях WooCommerce необходимо в файл темы function.php
вставить код:
//Вывод рейтинга в звездах в каталог
add_filter('woocommerce_product_get_rating_html', 'your_get_rating_html', 10, 2);
function your_get_rating_html($rating_html, $rating) {
if ( $rating > 0 ) {
$title = sprintf( __( 'Оценка %s из 5', 'woocommerce' ), $rating );
} else {
$title = 'Еще не оценено';
$rating = 0;
}
$rating_html = '<div class="star-rating" title="' . $title . '">';
$rating_html .= '<span style="width:' . ( ( $rating / 5 ) * 100 ) . '%"><strong class="rating">' . $rating . '</strong> ' . __( 'из 5', 'woocommerce' ) . '</span>';
$rating_html .= '</div>';
return $rating_html;
}
Чтобы на странице товара тоже выводился рейтинг, даже если нет комментариев с оценками, необходимо изменить файл /wp-content/plugins/woocommerce/templates/single-product/rating.php
[сначала копируем файл из папки плагина в нашу тему папку /wp-content/themes/mytheme/woocommerce/single-product/
]. В представленном коде нужно убрать конструкцию if: if ( $rating_count > 0 ) :
.
if ( $rating_count > 0 ) : /* удаляем условие (внимательней - закрывающий тег php должен остаться) */ ?>
<div class="woocommerce-product-rating">
<?php echo wc_get_rating_html( $average, $rating_count ); ?>
<?php if ( comments_open() ) : ?><a href="<?php echo get_permalink( $product->get_id() ); ?>#reviews" class="woocommerce-review-link">(<?php printf( _n( '%s customer review', '%s customer reviews', $review_count, 'woocommerce' ), '<span class="count">' . esc_html( $review_count ) . '</span>' ); ?>)</a><?php endif ?>
</div>
<?php endif; /* Удаляем конец if */ ?>