如何在WooCommerce中仅获取可变产品的父产品名称?
解决方案
你当前直接读取订单项的name字段获取的是系统预先拼接好的完整产品名(包含变体属性后缀),可以通过判断产品类型是否为可变变体,单独获取父产品的名称即可。
修改后的代码如下:
public function getProducts() { $items = $this->order->get_items(); $product = chr(10); if(!empty($items)) { foreach ($items as $item) { $product_item = $item->get_product(); if ($product_item) { // 判断是否为变体产品 if ($product_item->is_type('variation')) { // 获取父产品实例后读取名称 $parent_product = wc_get_product($product_item->get_parent_id()); $product = $parent_product ? $parent_product->get_name() : $item['name']; } else { // 普通产品直接取官方方法返回的名称 $product = $product_item->get_name(); } } } } $return['{products}'] = $product; }
相关说明:
- 调用
is_type('variation')方法可以准确判断当前产品是否为可变产品的子变体 - 用
get_parent_id()获取父产品ID后,通过wc_get_product()获取父产品实例,再调用get_name()即可拿到纯父产品名称 - 增加了父产品存在性判断,避免极端情况报错
内容的提问来源于stack exchange,提问作者Bondweb
相关产品推荐
相关产品推荐

