回答

收藏

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

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

我想在首页上显示客户评论的总数,我尝试了这种方法:
0 z" b. b3 T, `6 s' e) `( ?1 h 'approve',% ^5 J* N  w  X" A5 W
    'post_status' => 'publish',! s" T: O# v4 O# x" o' u
    'post_type'   => 'product'5 C' a+ p3 _3 ?, {" ~  F. g, F# J
  );
2 i7 E' e6 ]- f. b+ g, v$ Z( W  $comments_query = new WP_Comment_Query;- E" g4 w. ]: c$ i/ k& O) a
  $comments = $comments_query->query( $args );+ q; V$ Y8 s/ X3 `. a
  $count = get_comment_count($comments);, G- S1 ~+ b8 x  U" m/ i
?>
- R( o% C/ C6 P) g% n. E5 b6 r! }7 r$ K  q
  , m/ I% Y# Y8 n7 D; V* n& O, P, l+ K

& i4 w# j) P% t  Z# _5 H6 o1 \7 b但是没有按我想要的那样工作!例如,我有4条评论,此代码仅显示(1条评论),而不是(4条评论)。$ o2 |9 \* r3 T5 Z4 U
关于平均水平,我对主页上的工作方式一无所知,我只知道如何使用下面的代码在单个产品页面上实现此功能:1 ]4 T' K9 E( ?6 O$ w& v
$average = $product->get_average_rating();
4 z- Y( M2 {7 Q! I但是,此代码仅适用于单个产品的平均评分,而不是我想要的所有评论的全球平均值。' ^0 O# u# y$ \7 |
任何帮助表示赞赏。
6 Z$ ~# u& H- N* c( i                % o5 e& M0 z/ u5 W# c, W) x$ q& E8 F/ @6 v
解决方案:( Z% p1 E3 A# I4 p! D
               
7 M; s1 h' w8 O  E2 F6 M) z7 J/ e- j' r
; |8 k7 C; o' g$ A* [$ [% p
               
8 |9 v6 Y3 b5 L* i更新 (在没有评论的情况下避免最后一个函数的错误)) r- X- c  P4 q$ f9 y" e# T% w0 A/ H
' w9 i$ H* E# O; U. G( O
在下面,您将找到4个自定义函数,这些函数将为您提供:
  x. C8 I' g1 f[ol]产品总评论数; [* Y. j. S: `0 G
产品评分计数数据,这些数据将用于:
" z4 V8 g$ L/ f3 Q# A: |& t* y8 M产品按评分输出html计数
; n' V+ W7 |& ~& ?4 R产品评级平均产量html: s- ^) {1 d/ o5 K8 _  s8 _, }
% a# P* J0 v& v. a. A7 f
[/ol]
9 b, A) m9 E' [1 [功能代码:
. q( M' x  B+ {) O4 B% k! U% Lfunction get_total_reviews_count(){9 I5 d0 t6 Q& h3 g  e/ i, {
    return get_comments(array(3 Y! E4 z2 A' {% Q2 ?
        'status'   => 'approve',
. q5 x: O; h1 S; @        'post_status' => 'publish',
9 \, \2 s  F: _7 `4 Y6 O        'post_type'   => 'product',5 O& d, s8 ?% D/ e9 _
        'count' => true0 U( e8 k% H3 Q9 J3 k
    ));' Q- L$ Z) J# q7 L5 Q# H
}/ z1 ^- R, |/ T, c! W
function get_products_ratings(){& V: m# U9 M: r0 j
    global $wpdb;
% y3 Q+ M- D9 _5 n/ P6 k  R# [    return $wpdb->get_results("8 E2 ]/ P# u! O$ }4 p, \: C
        SELECT t.slug, tt.count
9 F% F: C" E" K7 V' m( J- v; N        FROM {$wpdb->prefix}terms as t
9 ]* I& \2 }' M  p        JOIN {$wpdb->prefix}term_taxonomy as tt ON tt.term_id = t.term_id
5 l* q/ e9 E0 p. U        WHERE t.slug LIKE 'rated-%' AND tt.taxonomy LIKE 'product_visibility'  z" w6 @2 `( u& L/ K' Z
        ORDER BY t.slug
7 D- G4 o6 v+ _& W% E- h+ t# B8 j, s    ");2 c& o$ L2 l) S0 v' l- {& l5 W
}/ N. c. |7 N; m3 i& z( I
function products_count_by_rating_html(){
: U1 `) X, t1 K( H$ u) V) G    $star = 1;
4 n: N0 R1 i: H: Q# b    $html = '';- m$ l' l* Y4 [  C% Z& r
    foreach( get_products_ratings() as $values ){
3 a7 N4 K9 s9 v% K: h8 j        $star_text = '<strong>'.$star.' '._n('Star', 'Stars', $star, 'woocommerce').'<strong>: ';
2 D7 w, x" V- w2 C5 _5 p7 }        $html .= 'slug.'&quot;>'.$star_text.$values->count.'';1 K8 \; u+ w- |' f3 G. K
        $star++;
4 a% r; y: D* a  J3 X    }
6 {  M) L; \9 {: u    return ''.$html.'';( M- `+ M( {  L2 K  O2 P$ K
}
( o2 w" G3 @5 @& R! `3 lfunction products_rating_average_html(){
0 {4 W9 Z  x/ @( c    $stars = 1;  n  r  a/ i7 K. C2 I  v( e
    $average = 0;
' }  o. e0 [% l    $total_count = 0;7 v/ |- q6 F; ]  D! K7 V; V
    if( sizeof(get_products_ratings()) > 0 ) :
" R9 W7 S# ~- T. S+ C$ D        foreach( get_products_ratings() as $values ){1 i% N, X: \$ {/ J$ N; }, u
            $average += $stars * $values->count;
; q! Z) T4 l/ `6 ?$ B/ F% X9 s            $total_count += $values->count;
9 |( s3 A  J6 ^0 j2 {4 ]$ Q& I            $stars++;, X- W3 g# G( X/ D! b- L! v  g4 R
        }
# g1 H& Y' d8 t0 o' z# v        return ''.round($average / $total_count, 1).' / 5 '. __('Stars average').'
* k6 W# d8 ?4 u2 H- e';# Y0 U* W9 G, O3 x3 ^. a
    else :
! i/ a2 L$ P8 ~/ L        return ''. __('No reviews yet', 'woocommerce').'+ d! Z; e' U4 j" E+ X4 ?9 b
';% z7 |5 W3 j2 u. }5 X  `. H4 ^. y
    endif;
' k& q6 M8 y, q+ \7 A4 l7 x) j1 D}
3 B$ Z/ ]0 g' U" a; u, p. |6 ]5 x8 A代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试和工作。
% p" d( O$ J0 }. p用法% s/ m8 G0 s4 i! D
[ol]
0 {) B) i  C6 S5 }( w' V客户评论总数:% I; @' a6 n1 w
echo ''.__('Total reviews','woocommerce').': '.get_total_reviews_count().'
5 @" Y+ b' Z" J5 \0 P* {5 E';; p  O5 h( x4 q% v

& t* X" m$ l- ]* [  k按评分列表计数的产品:
( F( ]0 W1 R* H2 d$ `) j! Eecho products_count_by_rating_html();' z" u# l8 ?. X: y7 T

+ \. e* ]+ Y7 F! n, |产品平均评价:
( `9 C3 d: G% u$ Mecho products_rating_average_html();
5 e" J) E6 N' q+ O# |
, R5 G- t9 h7 j' `9 ?$ z& _2 ?[/ol]
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则