如何将购买的产品添加或链接到客户

时间:2019-07-03 18:46:39

标签: woocommerce hook-woocommerce

我正在从非常老的定制电子商务网站(用作订阅模型)进行迁移。我有3种包含自定义数据的产品,可供购买该产品的客户使用。

因此,我要通过他们的电子邮件地址导入客户,并且我需要将产品添加到他们的购买/订单历史记录中,以便他们可以使用他们的自定义数据。

那么如何将产品链接到客户?

1 个答案:

答案 0 :(得分:0)

我不太确定这些自定义字段,但是似乎需要以编程方式创建订单,在此您可以“链接”现有用户和现有产品。

幸运的是,WooCommerce允许我们这样做:)

看一下这段代码:

function create_order() {
     // Create product
     $product = WC_Helper_Product::create_simple_product();
     WC_Helper_Shipping::create_simple_flat_rate();
     $order_data = array('status' => 'pending', 'customer_id' => 1, 'customer_note' => '', 'total' => '');
     $_SERVER['REMOTE_ADDR'] = '127.0.0.1';

     // Required, else wc_create_order throws an exception
     $order = wc_create_order($order_data);

     // Add order products
     $item_id = $order->add_product($product, 4);

     // Set billing address
     $billing_address = array('country' => 'US', 'first_name' => 'Jeroen', 'last_name' => 'Sormani', 'company' => 'WooCompany', 'address_1' => 'WooAddress', 'address_2' => '', 'postcode' => '123456', 'city' => 'WooCity', 'state' => 'NY', 'email' => 'admin@example.org', 'phone' => '555-32123');
     $order->set_address($billing_address, 'billing');

     // Add shipping costs
     $shipping_taxes = WC_Tax::calc_shipping_tax('10', WC_Tax::get_shipping_tax_rates());
     $order->add_shipping(new WC_Shipping_Rate('flat_rate_shipping', 'Flat rate shipping', '10', $shipping_taxes, 'flat_rate'));

     // Set payment gateway
     $payment_gateways = WC()->payment_gateways->payment_gateways();
     $order->set_payment_method($payment_gateways['bacs']);

     // Set totals
     $order->set_total(10, 'shipping');
     $order->set_total(0, 'cart_discount');
     $order->set_total(0, 'cart_discount_tax');
     $order->set_total(0, 'tax');
     $order->set_total(0, 'shipping_tax');
     $order->set_total(40, 'total');
     // 4 x $10 simple helper product

     return wc_get_order($order->id);
 }
在第五行

设置客户ID 然后在第12行将产品分配给订单。

caveat:我不确定wc_create_order()需要多少代码段,因为官方文档非常差。

我将尝试使用尽可能少的信息(或您拥有的信息)尽可能干净地运行此功能。

类似这样的东西:

function create_order() {
     // Create product
     $product = WC_Helper_Product::create_simple_product();

     $order_data = array('status' => 'pending', 'customer_id' => 1, 'customer_note' => '', 'total' => '');

     // Required, else wc_create_order throws an exception
     $order = wc_create_order($order_data);

     // Add order products
     $item_id = $order->add_product($product, 4);


     // Set totals
     //$order->set_total(40, 'total');

     return wc_get_order($order->id);
 }

祝你好运!