2016-03-02 73 views
0

现在我正在使用需要用于验证/分段的自定义字段的mailchimp插件。使用优惠券代码填写自定义字段WooCommerce

对于这个细分市场,我想检查使用什么样的优惠券。所以我清除下面的代码应该填补我的自定义字段中使用的优惠券:

add_action('woocommerce_checkout_update_order_meta', 
'my_custom_checkout_field_update_order_meta'); 

function my_custom_checkout_field_update_order_meta($order_id) { 
if (empty($_POST['my_field_name'])) { 
    $coupons = $order->get_used_coupons(); 
    update_post_meta($order_id, 'my_field_name', $coupons); 
} 
} 

可悲的是,这只会崩溃我的网站。

任何帮助将不胜感激。

+0

您可以添加PHP错误?任何日志? – Skatox

+0

我不能,但是我想出了一些东西。 改变:'$ coupons = $ order-> get_used_coupons();' To:'$ coupons = $ order_id-> get_used_coupons();' 使它不会崩溃,但仍然不会填写我的字段。 这可能是由于$ order从未定义的事实。 –

回答

0

有几个问题与您的代码:

  • 如果字段有任何资料你不验证,所以你需要 检查$_POST有my_field_name关键
  • 您需要加载$order变量以获得使用的优惠券。
  • 当有my_field_value时会发生什么?你存储它吗?

下面是修改后的代码:

add_action('woocommerce_checkout_update_order_meta', 
'my_custom_checkout_field_update_order_meta'); 

function my_custom_checkout_field_update_order_meta($order_id, $posted) { 
    if (isset($_POST['my_field_name']) && empty($_POST['my_field_name'])) { 
    $order = new WC_Order($order_id); 
    $coupons = $order->get_used_coupons(); 
    update_post_meta($order_id, 'my_field_name', $coupons); 
    } 

} 
+0

好的你的代码有点作用,但它会返回'数组'作为优惠券字段,并且该值从不显示在前端的实际字段中。这是我认为我需要它能让我的插件检查自定义字段是否包含某些优惠券代码的地方。 –

+0

取代'$ coupons = $ order-> get_used_coupons();'用'foreach($ order-> get_used_coupons()as $ coupon){ \t \t $ coupons。= $ coupon。'\ n'; }'我不再在我的领域获得'阵列',而是实际的优惠券。所以这部分解决.. –

+0

是的,你也需要验证。另外请记住,你可以在后期meta – Skatox