【问题标题】:WC_CREATE not setting billing or shipping addressWC_CREATE 未设置帐单或送货地址
【发布时间】:2018-06-03 17:07:07
【问题描述】:

最喜欢的 我正在尝试创建一个新订单,我的代码如下

{
        $products = $_POST['products'];
        $shipping_address = $_POST['shipping_address'];
        $billing_address = $_POST['billing_address'];
        global $woocommerce;
        $args = array(
            'customer_id' => get_current_user_id(),
        );
        $order = wc_create_order($args);
        foreach ($products as $product) {
            $order->add_product(get_product($product['id']), $product['quantity']);
        }
        $order->set_address($shipping_address, 'shipping');
        $order->set_address($billing_address, 'billing');
        $order->calculate_totals();
        wp_send_json(array("success" => true, "order" => $order));
    }

问题

1.收货地址和账单地址没有更新。 (参考图片)。我将字段传递为 https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/ 显示在帐单和运费中。

2.我需要自定义字段,例如(首选取货日期),如何将该字段作为元数据添加到该订单

3.如何获取新创建的order_id即成功或错误

  1. 如何将优惠券附加到总数中

【问题讨论】:

  • 我不认为 $_POST['shipping_address'] 填充了正确的信息。您应该使用正确的字段而不是不存在的数组。例如,名字在 $_POST['billing_first_name'] 中设置(默认情况下)。为了更好地帮助您,获取 $_POST 的 print_r 会很有帮助。

标签: woocommerce


【解决方案1】:

1,您需要使用$order->save(); 来保存您对订单所做的更新。

2、使用$order->update_meta_data( 'meta_field', $data );,别忘了$order->save();

3、你通过$order->get_id();$order获取id

4,没有尝试优惠券,但我相信你会解决的。

【讨论】:

  • $order->save() 没有用。仍然按帐单和送货地址为空。我得到了关于第 2 点的信息。第 3 点:$order->id 提供了信息
  • 搞定了。这是一个错字,我提到的所有内容都是 billing_first_name,它应该只是 first_name。非常感谢
  • @AlaksandarJesusGene 嘿,太好了,它正在工作。 :) 嗯,$order->get_id() 应该可以工作,我认为 $order->id 会给你一个 PHP 通知,但它仍然可以工作。
猜你喜欢
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
  • 2015-02-22
  • 2013-02-28
相关资源
最近更新 更多