You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WooCommerce中批量复制携带coupon_category自定义分类的优惠券

问题原因

你之前的写法不生效,核心原因是coupon_category属于自定义分类法(Taxonomy),不是普通的自定义字段(Post Meta):

  1. 分类法关联数据存储在WordPress的术语关联表中,不会通过get_meta_data读取、也不能通过set_meta_data写入
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:45:04