Woocommerce优惠券 - 无法以编程方式使用update_post_meta更新产品ID



当使用我的页面模板ID中的ACF字段在单个页面模板上提交表单时,我正在尝试以编程方式创建Woocommerce优惠券。

查看有关如何执行此操作的Woocommerce文档,他们建议在插入新优惠券后使用update_post_meta()设置属性。

但是,执行此操作时,在打印生成的优惠券的WC_Coupon对象并返回空数组时,不会添加产品 ID。

我已经确保 ACF 字段landing_page_products单独打印时返回一个 id 数组,但由于某种原因没有添加到对象或显示在管理员优惠券屏幕中。

我发现如果我使用$coupon->set_product_ids($products);而不是更新元,那么这似乎有效。

谁能解释为什么产品 ID 的更新元不起作用?

$coupon = [
'post_title' => $coupon_code,
'post_content' => '',
'post_status' => 'publish',
'post_author' => 1,
'post_type'     => 'shop_coupon'
];
$coupon_id = wp_insert_post($coupon);
// Get products meta from current landing page $post_id // 
$products = get_field('landing_page_products', $post_id);
/** Set default coupon meta **/
update_post_meta($coupon_id, 'individual_use', 'yes');
update_post_meta($coupon_id, 'apply_before_tax', 'no' );
update_post_meta($coupon_id, 'free_shipping', 'no' );
update_post_meta($coupon_id, 'product_ids', $products );

WC_Coupon Object
(
[data:protected] => Array
(
[product_ids] => Array
(
)
)

我之前曾以编程方式创建和更新Woocommerce优惠券,使用: Woo Docs -尽管有这个文档,但update_post_meta的 array(( 参数不起作用。

这是我的代码(经过测试(现在正在运行,update_post_meta的"product_ids">需要字符串,而不是数组。ID 为 130 和 131 的产品的示例代码:

update_post_meta( $_newCouponID, 'product_ids', "130, 131");
//or
$product_ids = "130, 131";
update_post_meta( $_newCouponID, 'product_ids', $product_ids);
//still use wp_update_post at the end of your code
wp_update_post($_newCouponID);

我希望这有所帮助。祝你今天开心。

最新更新