如何获取单条及每条评论的评分值以实现自定义评论展示
嘿,我懂你现在的困扰——自定义评论展示功能都搭好了,唯独拿不到rating字段的纯数字评分,还碰上个comment_meta报错的问题,对吧?咱们一步步来排查解决:
问题排查 & 可行解决方案
1. 先确认评分字段的真实存储键名
很多评论评分类插件(比如电商常用的评论插件)不会把评分直接存在名为rating的comment_meta里,可能用了带前缀的键名,比如_wc_review_rating、product_rating这类。
你可以先打印出目标评论的所有meta数据,找到对应评分的键:
// 假设当前处于评论循环内,先拿到评论ID $comment_id = get_comment_ID(); // 获取该评论的所有meta字段 $all_comment_meta = get_comment_meta($comment_id); // 打印出来查看(开发环境用,上线记得删掉) echo '<pre>'; print_r($all_comment_meta); echo '</pre>';
运行后你就能在输出里找到那个纯数字的评分项,记下它的真实键名。
2. 用正确的方式调用get_comment_meta
如果确认键名就是rating,那大概率是调用时没加第三个参数导致的——get_comment_meta默认返回数组,要获取单值必须传true:
// 正确获取纯数字评分的写法 $rating = get_comment_meta(get_comment_ID(), 'rating', true); // 强制转成整数,避免格式问题 $rating = intval($rating); echo $rating; // 直接输出纯数字,比如4
要是之前没加第三个参数,拿到的是数组,直接使用自然会报错。
3. 试试直接调用评论对象的属性
有些主题或插件会把评分直接绑定到评论对象上,不用走meta查询,你可以试试:
global $comment; // 直接取评论对象的rating属性,转成整数 $rating = intval($comment->rating); echo $rating;
这种方式更直接,能拿到值的话就省不少事。
4. 确保在评论循环内调用(或手动传评论ID)
如果你的自定义展示函数不在默认评论循环(比如wp_list_comments的回调函数里),get_comment_ID()可能拿不到正确的ID,这时候要手动把评论ID/对象传进去:
// 自定义评论展示回调函数,接收$comment对象 function my_custom_comment_renderer($comment, $args, $depth) { // 从评论对象里拿ID,再取评分 $rating = get_comment_meta($comment->comment_ID, 'rating', true); $rating = intval($rating); // 这里写你的自定义展示逻辑,比如输出数字或自定义星星 echo '<div class="custom-review-rating">'.$rating.'星</div>'; // 其他评论内容渲染逻辑... } // 调用评论列表时指定这个回调 wp_list_comments(array('callback' => 'my_custom_comment_renderer'));
5. 排查插件冲突
要是上面的方法都不管用,可能是其他评论/评分插件修改了meta字段。你可以暂时禁用非必要插件,尤其是和评论相关的,看看rating字段能不能正常获取,找到冲突源后再针对性调整。
内容的提问来源于stack exchange,提问作者Gabriel Souza
相关产品推荐
相关产品推荐

