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

商品属性独立生成
决定购物车的商品属性是否单独显示的代码如下:
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 )
所以,上面问题,是由于产品变体标题生成规则导致,只要解决了产品变体标题,购物车产品显示也能由你灵活定义。