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