Добавьте звездный рейтинг по идентификатору продукта на некоторых страницах в Woocommerce
Есть ли способ указать звездный рейтинг определенного продукта на пользовательской странице в пользовательских местах? Другими словами, могу ли я добавить звездный рейтинг определенной футболки, чтобы она отображалась, например, под изображением футболки на моей домашней странице?
Я полагаю, что мне нужно добавить какой-то php в свой редактор, а затем вызвать его с помощью какого-то html. Я видел этот поток ответов, в котором один из ответов, похоже, помог людям, однако он дает вам только необходимый php, поэтому я не знаю, как на самом деле разместить это в определенном месте на определенной странице. Я также не уверен, касается ли этот ответ возможности добавления звезд на пользовательские страницы, а не только на страницы woocommerce.
Еще один из ответов в этой теме содержит html. Я попробовал это и смог загрузить звезды, за исключением того, что они не соответствуют фактическому рейтингу звезд на странице продукта.
Я приношу извинения за то, что подобные вопросы уже существуют, однако они похоже, они не удовлетворяют мои потребности напрямую, и я слишком некомпетентен, чтобы заставить их работать:/.
1 answers
Для определенного идентификатора продукта вы можете использовать некоторые специальные WC_Product
методы:
// Get an instance of the WC_Product Object (from a product ID)
$product = wc_get_product( $product_id);
// The product rating count (number of reviews by rating )
$rating_count = $product->get_rating_counts(); // Multidimensional array
// The product average rating (or how many stars this product has)
$average_rating = $product->get_average_rating();
// Testing Output
echo '<p>Rating average: '.$average_rating.' stars</p>';
Для отображения среднего рейтинга товара "звезды":
Вы можете использовать специальную функцию wc_get_rating_html()
с get_average_rating()
WC_Product
метод. Таким образом, необходимый код будет следующим:
// Get an instance of the WC_Product Object (from a product ID)
$product = wc_get_product( $product_id);
// The product average rating (or how many stars this product has)
$average_rating = $product->get_average_rating();
// The product stars average rating html formatted.
$average_rating_html = wc_get_rating_html($average_rating);
// Display stars average rating html
echo $average_rating_html;
Протестировано и работает.
Интересный ответ: Рейтинг показывает цифры вместо звезды
Шорткод для отображения звездного рейтинга продукта везде - 2 версии кода:
1) Лучший способ, основанный на wc_get_rating_html()
функция (для Woocommerce 3+):
add_shortcode( 'product_rating', 'display_the_product_rating' );
function display_the_product_rating( $atts ) {
// Shortcode attributes
$atts = shortcode_atts( array(
'id' => '',
), $atts, 'product_rating' );
if ( isset($atts['id']) && $atts['id'] > 0 ):
// Get an instance of the WC_Product Object
$product = wc_get_product( $atts['id'] );
// The product average rating (or how many stars this product has)
$average = $product->get_average_rating();
endif;
if ( isset($average) ) :
return wc_get_rating_html($average);
endif;
}
2) Старый способ (также работает):
add_shortcode( 'product_rating', 'display_the_product_rating' );
function display_the_product_rating( $atts ) {
// Shortcode attributes
$atts = shortcode_atts( array(
'id' => '',
), $atts, 'product_rating' );
if ( isset($atts['id']) && $atts['id'] > 0 ):
// Get an instance of the WC_Product Object
$product = wc_get_product( $atts['id'] );
// The product average rating (or how many stars this product has)
$average = $product->get_average_rating();
// HERE the average width
$average_width = $average * 16 . 'px';
endif;
if ( isset($average) ) :
return '<div class="starwrapper" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
<span class="star-rating" title="'.sprintf(__('Rated %s out of 5', 'woocommerce'), $average).'">
<span style="width:'.$average_width.'">
<span itemprop="ratingValue" class="rating">'.$average.'</span>
</span>
</span>
</div><br clear="all">';
endif;
}
Вводится код function.php файл активной дочерней темы (или активной темы). Протестировано и работает.
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ:
1) На страницах WordPress или текстовый редактор сообщений (Где 37
является ли идентификатор продукта):
[product_rating id='37']
2) В коде php:
echo do_shortcode( "[product_rating id='37']" );
3) Между тегами html:
<?php echo do_shortcode( "[product_rating id='37']" ); ?>