我正在从非常老的定制电子商务网站(用作订阅模型)进行迁移。我有3种包含自定义数据的产品,可供购买该产品的客户使用。
因此,我要通过他们的电子邮件地址导入客户,并且我需要将产品添加到他们的购买/订单历史记录中,以便他们可以使用他们的自定义数据。
那么如何将产品链接到客户?
答案 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);
}
祝你好运!