如何在WooCommerce中批量复制携带coupon_category自定义分类的优惠券
问题原因
你之前的写法不生效,核心原因是coupon_category属于自定义分类法(Taxonomy),不是普通的自定义字段(Post Meta):
- 分类法关联数据存储在WordPress的术语关联表中,不会通过
get_meta_data读取、也不能通过set_meta_data写入 - WooCommerce默认的
WC_Coupon对象没有封装对应自定义分类的操作方法,所以你尝试调用set_coupon_category会触发未定义方法报错。
解决方法
在$new_coupon->save();之前添加以下代码即可实现自定义分类和标签的复制:
// 复制优惠券自定义分类 $orig_coupon_id = $orig_coupon->get_id(); // 获取原始优惠券绑定的coupon_category分类ID数组 $coupon_categories = wp_get_post_terms($orig_coupon_id, 'coupon_category', array('fields' => 'ids')); // 给新优惠券绑定相同分类 if (!is_wp_error($coupon_categories) && !empty($coupon_categories)) { wp_set_post_terms($new_coupon_id, $coupon_categories, 'coupon_category'); } // 复制优惠券自定义标签(如果需要) $coupon_tags = wp_get_post_terms($orig_coupon_id, 'coupon_tag', array('fields' => 'ids')); if (!is_wp_error($coupon_tags) && !empty($coupon_tags)) { wp_set_post_terms($new_coupon_id, $coupon_tags, 'coupon_tag'); }
如果你的标签对应的自定义分类法别名不是coupon_tag,可以去后台分类编辑页的URL里查看对应的taxonomy参数值,替换代码中的别名即可。
代码说明
wp_get_post_terms是WordPress核心函数,用于获取指定内容绑定的指定分类法条目,第三个参数设置fields => 'ids会直接返回分类ID数组,不需要额外处理wp_set_post_terms用于给指定内容绑定分类ID,自动处理关联关系,不需要额外保存操作
内容的提问来源于stack exchange,提问作者vsilvestre22
相关产品推荐
相关产品推荐

