Как с помощью кода добавить новый order(заказ) в woocommerce?

Решено

Здравствуйте, я разрабатываю интернет магазин на вордпресс, с использованием woocommerce. Сейчас у меня стоит такая задача, что бы в результате определенных действий пользователя(клике по кнопке), создавался новый заказ(order) в админке, со всеми данными. Что бы можно было видеть данные как у нормального заказа. То есть нужно что бы происходил расчет полной стоимости, добавлялись адреса и данные того кто оплатил, добавить статус заказа, добавлялась информация о продукте. Скажите можно ли это реализовать в  woocommerce? Может есть какие либо встроенные функции которые реализую функционал добавления заказа с помощью кода.

Добавить Комментарий
Ответ

Для того что бы с помощью кода добавить новый заказ в  woocommerce, который будет отображаться в админке вордпресс, используете следующую функцию:

 // Добавляем новый заказ, он пустой, потом будем добавлять в него данные
 $order_args = array(
 'status' => '',
 'customer_id' => get_current_user_id(), // id пользователя который сделал заказ
 'customer_note' => null,
 'order_id' => 0,
 'created_via' => '',
 'parent' => 0
 );
 $order = wc_create_order($order_args);
 // Получаем и сразу же добавляем данные о продукте который покупает пользователь get_current_user_id()
 $order->add_product(get_product($product), 1);
 // Заполняем информацию о пользователе который сделал покупку и информацию о доставке
 $address_billing = array(
 'first_name' => get_user_meta(get_current_user_id(), 'billing_first_name', true),
 'last_name' => get_user_meta(get_current_user_id(), 'billing_last_name', true),
 'company' => get_user_meta(get_current_user_id(), 'billing_company', true),
 'email' => get_user_meta(get_current_user_id(), 'billing_email', true),
 'phone' => get_user_meta(get_current_user_id(), 'billing_phone', true),
 'address_1' => get_user_meta(get_current_user_id(), 'billing_address_1', true),
 'address_2' => get_user_meta(get_current_user_id(), 'billing_address_2', true),
 'city' => get_user_meta(get_current_user_id(), 'billing_city', true),
 'state' => get_user_meta(get_current_user_id(), 'billing_state', true),
 'postcode' => get_user_meta(get_current_user_id(), 'billing_postcode', true),
 'country' => get_user_meta(get_current_user_id(), 'billing_country', true)
 );
 $address_shipping = array(
 'first_name' => get_user_meta(get_current_user_id(), 'shipping_first_name', true),
 'last_name' => get_user_meta(get_current_user_id(), 'shipping_last_name', true),
 'company' => get_user_meta(get_current_user_id(), 'shipping_company', true),
 'address_1' => get_user_meta(get_current_user_id(), 'shipping_address_1', true),
 'address_2' => get_user_meta(get_current_user_id(), 'shipping_address_2', true),
 'city' => get_user_meta(get_current_user_id(), 'shipping_city', true),
 'state' => get_user_meta(get_current_user_id(), 'shipping_state', true),
 'postcode' => get_user_meta(get_current_user_id(), 'shipping_postcode', true),
 'country' => get_user_meta(get_current_user_id(), 'shipping_country', true)
 );
 $order->set_address($address_billing, 'billing');
 $order->set_address($address_shipping, 'shipping');
 // Добавим статус "платеж выполнен"
 $order->update_status('completed');
 // данные о покупке (цена и сниппет под названием)
 $shipping = new stdClass();
 $shipping->label = 'Code pay';
 $shipping->id = 'code_pay';
 $shipping->cost = 0.00;
 $shipping->taxes = array();
 $order->add_shipping($shipping);
 // Обновим данные о покупке и рассчитаем итоговою стоимость
 $order->calculate_shipping();
 $order->calculate_totals();
 

Обзор переменных в коде:
$product — id продукта
get_current_user_id() — id покупателя

Добавить Комментарий

Ваш ответ

Размещая свой ответ, вы соглашаетесь с правилами сайта.