Как добавить или связать купленный товар с клиентом - PullRequest
0 голосов
/ 03 июля 2019

Я выполняю миграцию с очень старого, сделанного на заказ сайта электронной коммерции, который работает как модель подписки.У меня есть 3 различных продукта, которые содержат пользовательские данные, доступные для клиентов, которые приобрели продукт.

Поэтому я импортирую клиентов по их адресу электронной почты, и мне нужно добавить продукты в их историю покупок / заказов, чтобыполучить в свои руки пользовательские данные.

Так как же связать товар с клиентом?

1 Ответ

0 голосов
/ 03 июля 2019

Я не совсем уверен насчет этих настраиваемых полей, но, похоже, что нужно, чтобы создавать заказы программно, где вы «связываете» существующих пользователей и существующие продукты.

К счастью, 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);
 }

в 5-й строке вы устанавливаете идентификатор клиента и в 12-й строке вы назначаете товар для заказа.

Предостережение: я не уверен, какая часть этого фрагмента требуется для 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);
 }

удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...