如何在WooCommerce购物车的产品标题下方展示星级评价与评价数量
问题原因
你调用的woocommerce_review_display_rating()函数依赖全局商品上下文才能正常输出,未传入当前购物车商品对象时不会返回任何内容。同时你使用的woocommerce_cart_item_name是过滤器钩子,直接echo输出内容会导致页面结构错位,应该用return返回修改后的内容。
修正后的完整代码
add_filter('woocommerce_cart_item_name', 'custom_item_display_on_cart', 10, 3); function custom_item_display_on_cart($name, $cart_item, $cart_item_key){ $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key ); $thumbnail = $_product->get_image(); $price = $_product->get_price_html(); // 新增:获取商品评分与评价数量 $average_rating = $_product->get_average_rating(); $rating_count = $_product->get_review_count(); $rating = wc_get_rating_html( $average_rating, $rating_count ); // 拼接评价数量 if ($rating_count > 0) { $rating .= '<span class="review-count" style="margin-left:6px;vertical-align:middle;">(' . $rating_count . ')</span>'; } $product_variation = ''; if(!empty($cart_item['variation_id']) && $cart_item['variation_id'] != 0 ){ if(is_array($cart_item['variation']) && !empty($cart_item['variation'])){ foreach ($cart_item['variation'] as $key => $value) { $product_variation .= ''.ucfirst(str_replace('attribute_pa_', '', $key)).' : '.ucfirst($value); } } } // 把原来的echo改为return,符合过滤器钩子的使用规范 return '<div class="product-item-wrapper"> '. '<div class="product-thumbnail-wrapper">' . $thumbnail. '</div>' . '<div class="item-wrapper">' . '<div class="product-name">' . $name . '</div>' . '<div class="product-variation">' . $product_variation . '</div>' .'<div class="product-price-item">' . $price . '</div>'. $rating . '</div>' . ' </div>'; }
优化提示
如果默认评分样式不符合预期,给.review-count添加自定义CSS规则调整字号、间距即可。
内容的提问来源于stack exchange,提问作者user6684898
相关产品推荐
相关产品推荐

