В 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 — Не удался