2016-03-02 106 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