Woo购物车商品属性显示不一致的问题

如下图:第一个商品标题没有带上属性名,而是在下方单独显示,第二个则相反。

商品属性独立生成

决定购物车的商品属性是否单独显示的代码如下:

echo wc_get_formatted_cart_item_data($cart_item);

作用是检查属性值是否已经包含在产品名称中。

例如,产品名称已经是 “Women’s Herbal Deodorant Insoles – US Women 10 / EUR 45”,而属性值也是 “US Women 10 / EUR 45”,为了避免重复显示,就会跳过该属性的输出。

产品变体标题生成规则

后台生成产品变体时,其产品变体标题生成规则,

// class-wc-product-variation-data-store-cpt.php
public function create( &$product ) {...}
protected function generate_product_title( $product ) {
 $attributes = (array) $product->get_attributes();
...

若变体属性数量 ≥ 3 个:标题中不包含属性(避免标题过长)。
若变体属性数量 = 1 个:标题中包含属性。
若变体属性数量 = 2 个,但任何属性名含连字符(如 pa_insole-size):标题中不包含属性(避免多词属性名导致标题冗余)。

也允许通过过滤器自定义产品变体标题生成规则规则,详见源码:

protected function generate_product_title( $product )

所以,上面问题,是由于产品变体标题生成规则导致,只要解决了产品变体标题,购物车产品显示也能由你灵活定义。