You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress WooCommerce 无评分商品空星级显示位置调整技术求助

调整WooCommerce无评分商品空星级位置的解决方案

你遇到的问题核心是钩子优先级设置不对,导致空星级跑到价格后面去了~ 默认情况下,WooCommerce里有评分商品的星级是通过woocommerce_after_shop_loop_item_title钩子、优先级5来输出的,而商品价格的输出优先级是10。你的代码没指定优先级,默认就用了10,自然会跟在价格后面。

另外,你的代码里还有个小问题:$rating变量没定义,无评分的时候得把它设为0,不然会触发PHP警告哦。

下面是修正后的完整代码,能让无评分商品的空星级和有评分商品的星级位置保持一致(都在价格上方):

add_action('woocommerce_after_shop_loop_item_title', 'display_empty_star_rating', 4); 
function display_empty_star_rating() {
    global $product;
    
    // 只针对没有评分的商品处理
    if ($product->get_rating_count() == 0) {
        $rating = 0; // 明确设置评分为0,避免未定义变量报错
        $rating_html = '<a href="' . get_the_permalink() . '#respond">
            <div class="star-rating"><span style="width:' . (($rating / 5) * 100) . '%"></span></div>
            <span class="woocommerce-review-link"></span>
        </a>';
        echo $rating_html;
    }
}

几个关键调整:

  • 修改钩子优先级为4:比默认星级的优先级5还要小,这样空星级会在价格(优先级10)之前输出,和有评分商品的星级位置完全对齐。
  • 修复未定义变量:添加$rating = 0;,解决PHP报错问题。
  • 移除多余标签:原代码开头的</a>是多余的,会破坏页面结构,已经删掉了。

替换掉你原来的代码后,无评分商品的空星级就会乖乖显示在价格上方啦~

内容的提问来源于stack exchange,提问作者Umer Yaseen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 13:42:31