Как с помощью кода добавить новый 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 покупателя