Today we will talk about how to create order programmatically. While working on your WooCommerce Store, You need to create an order programmatically for any reason like creating a custom form for creating the order. Instead of using the WooCommerce interface to create customers or orders, explore this tutorial to do it programmatically.
/* First need address */
$orderAddress = array(
'first_name' => 'test', //add first name to order address
'last_name' => 'test', //add first name to order address
'company' => 'test', //add company name to order address
'email' => 'test@test.com', //add email to order address
'phone' => 123456677, //add phone to order address
'address_1' => 'test', //add address to order address
'address_2' => '',
'city' => 'test', //add city to order address
'state' => 'test', //add state to order address
'postcode' => 'test', //add postcode to order address
'country' => 'US'. //add country to order address
);
$cutomOrder = wc_create_order(); // create new object for order
$productId = 20; // set product id
$quantity = 2; // set product quantity
$cutomOrder->add_product( get_product( $productId ), $quantity ); // add product and quantity to order
$cutomOrder->set_address( $orderAddress, 'billing' ); // set billing address
$cutomOrder->set_address( $orderAddress, 'shipping' ); // set shipping address
$cutomOrder->calculate_totals(); // calculate total
update_post_meta( $cutomOrder->id, '_payment_method', 'cod' ); //set payment method
update_post_meta( $cutomOrder->id, '_payment_method_title', 'cod' ); //set payment title
$orderAddress = array(
'first_name' => 'test', //add first name to order address
'last_name' => 'test', //add first name to order address
'company' => 'test', //add company name to order address
'email' => 'test@test.com', //add email to order address
'phone' => 123456677, //add phone to order address
'address_1' => 'test', //add address to order address
'address_2' => '',
'city' => 'test', //add city to order address
'state' => 'test', //add state to order address
'postcode' => 'test', //add postcode to order address
'country' => 'US'. //add country to order address
);
$cutomOrder = wc_create_order(); // create new object for order
$productId = 20; // set product id
$quantity = 2; // set product quantity
$cutomOrder->add_product( get_product( $productId ), $quantity ); // add product and quantity to order
$cutomOrder->set_address( $orderAddress, 'billing' ); // set billing address
$cutomOrder->set_address( $orderAddress, 'shipping' ); // set shipping address
$cutomOrder->calculate_totals(); // calculate total
update_post_meta( $cutomOrder->id, '_payment_method', 'cod' ); //set payment method
update_post_meta( $cutomOrder->id, '_payment_method_title', 'cod' ); //set payment title