[英]Get product reviews average rating in a custom WooCommerce repport
在 Woocommerce 中,我試圖為每個產品顯示一個報告(HTML 表),例如:
基於“ 在 WooCommerce 中顯示總客戶評論和平均評分”答案代碼,它以這種方式獲得產品平均評分:
echo products_rating_average_html();
如何單獨獲得每個產品的平均評分……例如,如果產品有 4 或 5 條評論,它會獲得它們的平均評分(對於每個產品)
我也想得到每個產品的評論評論,把它們也放在桌子上……
這將給出給定產品 ID 的平均評分
$rating = get_post_meta( $product_id, '_wc_average_rating', true );
您可以在產品循環中使用它,這將為您提供沒有任何 html 的原始平均評分數
要獲取最新評論,您可以在下面使用在 functions.php 中添加此代碼,然后在要顯示最新評論的位置調用此操作,將當前產品對象作為參數傳遞
function display_product_review($product_id) {
$product = wc_get_product( $product_id );
$comments = get_approved_comments( $product->id );
$product_link = '/product/' . $product->post->post_name . "/#tab-reviews/";
if ( !empty ($comments) ) {
echo $comments[0]->comment_content . '<br><a href="'. $product_link . '">Read more reviews...</a>';
} else {
echo "There are no reviews for this product yet. Would you like to <a href='" . $product_link ."'>add your own review</a>?";
}
}
add_action('get_latest_review','display_product_review');
行動呼吁
do_action('get_latest_review',$product);
看看這個答案線程,你會看到你可以使用WC_Product
方法,如:
get_average_rating()
get_rating_counts()
…這是一個完整的例子:
1)獲取產品所需的相關數據(可定制):
$products_data = []; // Initializing
$products = wc_get_products( ['limit' => -1] ); // Get all WC_Product objects
// Loop through products -- Preparing data to be displayed
foreach ( $products as $product ) {
$product_id = $product->get_id();
// 1. Product data as product name …
$products_data[$product_id]['name'] = $product->get_name();
// 2. Average rating and rating count
$products_data[$product_id]['rating'] = (float) $product->get_average_rating();
$products_data[$product_id]['count'] = (int) $product->get_rating_count();
// 3. Reviews -- Loop though product reviews
foreach( get_approved_comments( $product_id ) as $review ) {
if( $review->comment_type === 'review' ) {
$products_data[$product_id]['reviews'][] = (object) [
'author' => $review->comment_author,
'email' => $review->comment_author_email,
'date' => strtotime($review->comment_date),
'content' => $review->comment_content,
];
}
}
}
2) 可定制的表格顯示:
echo '<table class="products-reviews-ratings"><tr>
<th>'.__("ID").'</th>
<th>'.__("Name").'</th>
<th>'.__("Rating").'</th>
<th>'.__("count").'</th>
<th style="text-align:center">'.__("Reviews (author, date and content)").'</th>
</tr>';
foreach ($products_data as $product_id => $data){
echo '<tr>
<td>'.$product_id.'</td>
<td>'.$data['name'].'</td>
<td>'.$data['rating'].'</td>
<td>'.$data['count'].'</td>
<td style="text-align:center">';
if( isset($data['reviews']) && $data['reviews'] > 0 ) {
echo '<table>';
// Loop through reviews
foreach ($data['reviews'] as $review ){
echo '<tr>
<td><a href="mailto:'.$review->email.'">'.$review->author.'</a></td>
<td>'.date( 'Y-m-d', $review->date ).'</td>
<td>'.$review->content.'</td>
</tr>';
}
echo '</table>';
} else {
_e('No reviews yet');
}
echo '</td></tr>';
}
echo '</table>';
你會得到類似的東西:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.