|
我想在首页上显示客户评论的总数,我尝试了这种方法:
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.'">'.$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] |
|