Wordpress 使用已使用的优惠券代码填写自定义字段

Wordpress 使用已使用的优惠券代码填写自定义字段,wordpress,woocommerce,field,segment,coupon,Wordpress,Woocommerce,Field,Segment,Coupon,现在我正在使用一个mailchimp插件,它需要一个自定义字段来进行验证/分段 对于这一部分,我想检查使用哪种优惠券。因此,我清除了以下代码,这些代码应该用使用过的优惠券填充我的自定义字段: add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' ); function my_custom_checkout_field_update_order_met

现在我正在使用一个mailchimp插件,它需要一个自定义字段来进行验证/分段

对于这一部分,我想检查使用哪种优惠券。因此,我清除了以下代码,这些代码应该用使用过的优惠券填充我的自定义字段:

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);
}
}
不幸的是,这只会使我的网站崩溃


非常感谢您的帮助。

您的代码有几个问题:

  • 您没有验证字段是否有任何信息,因此需要 检查
    $\u POST
    是否有my\u field\u name键
  • 您需要加载
    $order
    变量才能获得使用过的优惠券
  • 当存在“我的字段”值时会发生什么?你储存它吗
以下是修改后的代码:

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);
  }

}

可以添加PHP错误吗?有日志吗?我不能,不过我想起来了。更改:
$coups=$order->get_used_coups()收件人:
$coups=$order\u id->使用优惠券()防止它崩溃,但仍不会填充我的字段。这可能是因为从未定义$order。好吧,您的代码有点正常,但是它将返回“array”作为优惠券字段,并且值永远不会显示在前端的实际字段中。我想我需要它来让我的插件检查自定义字段是否包含某些优惠券代码
使用
foreach($order->get_used_coups()as$coupon){$coups.=$coupon.\n'}
我不再在字段中获取“array”,而是实际的优惠券。这一部分已经解决了……是的,你也需要验证一下。还请记住,您可以在post Meta中存储数组。最好执行explode($order->get_used_coups(),'\n'),Foreach感谢您!我剩下的问题,与代码无关,但似乎与插件有关。问题解决了。