【问题标题】:Fill out custom field with used coupon code WooCommerce使用使用的优惠券代码 WooCommerce 填写自定义字段
【发布时间】:2016-03-02 13:42:45
【问题描述】:

现在我正在使用一个 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);
}
}

遗憾的是,这只会使我的网站崩溃。

任何帮助将不胜感激。

【问题讨论】:

  • 可以添加PHP错误吗?有日志吗?
  • 我不能,但是我想出了一些办法。更改:$coupons = $order->get_used_coupons(); 至:$coupons = $order_id->get_used_coupons(); 使其不会崩溃,但仍不会填写我的字段。这可能是因为 $order 从未定义过。

标签: wordpress woocommerce field segment coupon


【解决方案1】:

你的代码有几个问题:

  • 您没有验证该字段是否有任何信息,因此您需要 检查$_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);
  }

}

【讨论】:

  • 好的,你的代码有点工作,但是它会返回'array'作为优惠券字段,并且该值永远不会显示在前端的实际字段中。我认为我需要它来让我的插件检查自定义字段是否包含某些优惠券代码。
  • 通过将$coupons = $order->get_used_coupons(); 替换为foreach( $order->get_used_coupons() as $coupon) { $coupons .= $coupon.'\n'; } 我不再在我的领域中获得“数组”,而是实际的优惠券。这样那部分就解决了..
  • 是的,您还需要验证这一点。还要记住,您可以在 post meta 中存储数组
  • foreach 最好做explode($order->get_used_coupons(),'\n')
  • 谢谢!我剩下的问题与代码无关,但似乎与插件有关。问题解决了。
猜你喜欢
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 2017-07-13
  • 2021-04-09
  • 1970-01-01
相关资源
最近更新 更多