回答

收藏

显示WooCommerce中客户的评论总数和平均评分

技术问答 技术问答 96 人阅读 | 0 人回复 | 2023-09-13

我想在首页上显示客户评论的总数,我尝试了这种方法:7 ]5 o% @4 V4 b
'approve',6 y( |6 W6 |2 v5 ]
    'post_status' => 'publish',
6 {/ _7 c- z5 L" f/ [$ }1 D    'post_type'   => 'product'' q/ E" J4 f( b6 [
  );0 I% i2 R8 p8 `. d, L
  $comments_query = new WP_Comment_Query;( R; J+ o# P- y( m& ^2 r- J% o# H$ R
  $comments = $comments_query->query( $args );
" _, H  {; K% u. j  $count = get_comment_count($comments);; t) `: Y7 }/ T* g' z
?>
+ ?( f7 w  `0 |
" V: z: v, {5 m' x- O  [3 E  $ N( ^& |3 [0 q

& z+ x( ~3 H3 [6 s但是没有按我想要的那样工作!例如,我有4条评论,此代码仅显示(1条评论),而不是(4条评论)。8 y8 }/ K0 F) F# R$ O
关于平均水平,我对主页上的工作方式一无所知,我只知道如何使用下面的代码在单个产品页面上实现此功能:# x& v3 D* ?! `7 x  U% |$ W
$average = $product->get_average_rating();
9 {; e9 A7 i' v6 I4 G但是,此代码仅适用于单个产品的平均评分,而不是我想要的所有评论的全球平均值。5 \7 F8 G6 N) }0 }  ?" c; _
任何帮助表示赞赏。
; y" U3 E' l& e! l$ f) N( n2 M. Z                $ s- O( p1 z2 E7 Q
解决方案:
* |% p9 ?& C# G  g, [7 R               
3 ~7 c' o) |, L' M8 i
+ P1 I" P) G# D  A
6 i* h" W+ [2 p7 v4 A0 y; X               
5 T4 u1 q  A$ z! R4 `更新 (在没有评论的情况下避免最后一个函数的错误)
  z7 `+ u2 R, X0 h- s: ?# b* ~
9 S( ?4 Y* P6 R! }: Y5 B3 b在下面,您将找到4个自定义函数,这些函数将为您提供:7 }6 D# {+ t  M( Y  I
[ol]产品总评论数# R) D* s- J2 f( e! ^: X
产品评分计数数据,这些数据将用于: 5 F, v. G' U5 M$ U0 i. h7 c
产品按评分输出html计数( Y* h# j, @) O( \  Q+ N; v1 F9 |0 b# Q
产品评级平均产量html
  L+ h' w- V5 j7 {8 r/ \% ?9 r

: [$ t7 @- C" j+ n* B; B9 Y[/ol], V, ^  g6 m  T: J3 l5 o' [
功能代码:9 i* [7 v. H9 \6 N# T. m) t9 J
function get_total_reviews_count(){
" e+ [# ^( t; E9 ]# T    return get_comments(array(/ H" [! K/ U" W/ u2 U
        'status'   => 'approve',8 A: K! Q" ?* F4 i
        'post_status' => 'publish',* I# Y) I4 b: l% n
        'post_type'   => 'product',9 f+ A% K2 Q& p" _- ~
        'count' => true
( o( K; v+ q  g: F4 F: E    ));( `- V% N2 a% x
}. Z% K( l' i, \* h2 _
function get_products_ratings(){
7 m: ]* y1 g* G% H+ M1 h$ G, d    global $wpdb;
2 ]2 U+ [+ Q6 n, \  ]    return $wpdb->get_results("
! F9 X* A6 B1 @$ x        SELECT t.slug, tt.count$ G7 t, ]" B& i: K" d8 b, i
        FROM {$wpdb->prefix}terms as t
! N; ~; P5 H1 O0 P$ o% f1 c. G        JOIN {$wpdb->prefix}term_taxonomy as tt ON tt.term_id = t.term_id: G" x# |* [' G9 Y/ m
        WHERE t.slug LIKE 'rated-%' AND tt.taxonomy LIKE 'product_visibility'
3 V. m$ \, N, J        ORDER BY t.slug
' T2 _, z3 @* I0 M, c" \$ Y    ");+ m6 L0 F: e, `# t& }% P4 j
}0 o8 F6 `7 v" c; _6 f$ \* m& i
function products_count_by_rating_html(){, \5 V  _! p& |) c5 w; i7 u
    $star = 1;
' g, O* G* T% @* W' H8 u    $html = '';
: a" G, ~: L; q  m6 Z    foreach( get_products_ratings() as $values ){9 ^% @' l  G6 u2 _/ ]
        $star_text = '<strong>'.$star.' '._n('Star', 'Stars', $star, 'woocommerce').'<strong>: ';0 Q# \  Z3 ^8 `* I4 M9 Q3 m
        $html .= 'slug.'&quot;>'.$star_text.$values->count.'';" J: [( _" _$ \; D5 c
        $star++;* z2 X$ y4 V8 B2 T
    }
/ d; i% W6 i% m6 s! ?1 I    return ''.$html.'';1 N0 o% v( ~) o  l* _& P
}
7 o  n/ G2 n" Y* y; [! w6 u6 U- Ofunction products_rating_average_html(){
3 E- M* A& ], G) i# h9 `    $stars = 1;
2 L4 W! \- D0 Z% E# P/ t* @    $average = 0;8 S, S# W' v/ Y9 g$ l# P7 x. ^
    $total_count = 0;# S8 G, |$ ^  L7 |7 O0 I* Q! w& s
    if( sizeof(get_products_ratings()) > 0 ) :
* x4 p. w. A8 m* ]: `) {# z3 X6 S        foreach( get_products_ratings() as $values ){
- G0 m/ z# }1 _. n9 t, P            $average += $stars * $values->count;
# b$ V. a. k7 o& S8 B            $total_count += $values->count;
7 O4 B+ w5 b9 Q# `, B/ ^            $stars++;
3 @' L4 ~5 m; s! f7 ~        }
5 R  ^* E2 x( v- B" p1 T        return ''.round($average / $total_count, 1).' / 5 '. __('Stars average').': ]: Z% A( @3 b2 L
';- c. O; V! K" ?4 O, i% V
    else :, M* G$ Y' D, V% m6 d- J
        return ''. __('No reviews yet', 'woocommerce').'
5 c# [/ m, |8 u1 t7 x';
( O4 d, V2 P+ F' w/ @. A    endif;3 x1 D, s+ L: {0 j7 H) i
}
, ]1 c! l# O  @代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试和工作。
" |( A9 v1 [( |% z0 T7 K1 B7 P, B0 V用法$ A* N% M% B1 w% _
[ol]
, s7 ^2 |& B4 v9 e- M( U) k客户评论总数:5 J; y" I+ ?; P( g, o9 J
echo ''.__('Total reviews','woocommerce').': '.get_total_reviews_count().'
& n) Q5 E5 W+ B) `$ e0 P9 J';* Z3 p8 x4 t9 N3 v1 G; j- X% F

: w0 @) e) Z  s" ?按评分列表计数的产品:
  e2 [9 \$ c8 Secho products_count_by_rating_html();
' E3 g5 Z3 K: F$ Q: u: k* A' _
' l6 P0 O8 c! X产品平均评价:
! i! [" T% v- e4 i: Jecho products_rating_average_html();6 B7 ]# a4 r! e+ S$ _6 V

; v. }8 H3 J8 u: Q& O7 D3 b[/ol]
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则