WooCommerce создание заказа

В WooCommerce для создания заказа есть функция wc_create_order(), она создаёт новый заказ и возвращает его в виде объекта в который возможно добавить нужные свойства.
Примеры использования данной функции с расшифровкой.

<?php
global $woocommerce; //для работы функций woocommerce не в шаблонах woocommerce
$order=wc_create_order(); //создаём новый заказ
//Записываем в массив данные о доставке заказа и данные клиента
$address = array(
    'first_name' => $first_name,
    'last_name'  => $last_name,
    'company'    => '',
    'email'      => $email,
    'phone'      => '',
    'address_1'  => $adress_one,
    'address_2'  => $adress_two, 
    'city'       => $city,
    'state'      => '',
    'postcode'   => $postcode,
    'country'    => ''
); 

    
$order->add_product( get_product( '99' ), 1 );//Добавляем в заказ товары: 99-ID товара, 1-количество

$order->set_address( $address, 'billing' ); //Добавляем данные о доставке
$order->set_address( $address, 'shipping' ); // и оплате

$payment_gateways = WC()->payment_gateways->payment_gateways();
$payment = $order->set_payment_method( $payment_gateways['cod'] ); // Установливаем способ оплаты (в переменной $payment_gateways хрянятся все доступные способы оплаты)

$order->calculate_totals(); //подбиваем сумму и видим что наш заказ появился в админке
$order->add_order_note($comment); //добавляет комментарий к заказу (можно указывать в подряд сколько угодно)
$order->update_status('processing', true); //устанавливает статус заказа "В обработке" (в этом случае WooCommerce отправляет уведомление администратору сайта и клиенту) и записываем информацию об оплате

в случае если нам нужно изменить стоимость товара

<?php
global $woocommerce;//для работы функций woocommerce не в шаблонах woocommerce
$order=wc_create_order(); //создаём новый заказ
//Записываем в массив данные о доставке заказа и данные клиента
$address = array(
    'first_name' => $first_name,
    'last_name'  => $last_name,
    'company'    => '',
    'email'      => $email,
    'phone'      => '',
    'address_1'  => $adress_one,
    'address_2'  => $adress_two, 
    'city'       => $city,
    'state'      => '',
    'postcode'   => $postcode,
    'country'    => ''
); 

$product_id = 99; // ID товара или вариации
$new_product_price = $new_price; // новая стоимость товара
$quantity = 1; // количество товаров
$product = wc_get_product( $product_id ); // получаем данные товара WC_Product object
$product->set_price( $new_product_price ); // Изменяем стоимость товара

$order->add_product( $product, $quantity); //Добавляем в заказ товар

$order->set_address( $address, 'billing' ); //Добавляем данные о доставке
$order->set_address( $address, 'shipping' ); // и оплате

$payment_gateways = WC()->payment_gateways->payment_gateways();
$payment = $order->set_payment_method( $payment_gateways['cod'] ); // Установливаем способ оплаты (в переменной $payment_gateways хрянятся все доступные способы оплаты)

$order->calculate_totals(); //подбиваем сумму и видим что наш заказ появился в админке
$order->add_order_note($comment); //добавляет комментарий к заказу(можно указывать в подряд сколько угодно)
$order->update_status('processing', true); //устанавливает статус заказа "В обработке" (в этом случае WooCommerce отправляет уведомление администратору сайта и клиенту) и записываем информацию об оплате

статус заказа назначается последовательно, если вам нужно установить статус Выполнен то вызываем $order->update_status ещё раз но уже в новом статусе.

<?php
$order->update_status('completed', true);

Возможные статусы

pending — В ожидании оплаты
processing — Обработка
on-hold — На удержании
completed — Выполнен
cancelled — Отменен
refunded — Возвращён
failed — Не удался