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
相关产品推荐
相关产品推荐

