Я не совсем уверен насчет этих настраиваемых полей, но, похоже, что нужно, чтобы создавать заказы программно, где вы «связываете» существующих пользователей и существующие продукты.
К счастью, 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);
}
удачи!