Добавляем заказ в WooCommerce программно.

Наверное кто хоть раз сталкивались с созданием интернет-магазина на Woocommerce знают о его громоздкой и не приспособленной для стран СНГ странице checkout. (P.S. да, я знаю о saphali и о множестве плагинов для её редактирования, но речь сейчас не об этом).

В одном из проектов мне понадобилось оформлять заказ прям из корзины, вообще минуя эту страницу и с минимумом полей для ввода. Выглядело это примерно так:

2015-04-07 14-10-47 Cart Wptest - Google Chrome

 

 

 

 

 

 

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

 

$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' ); // и оплате
 $order->calculate_totals(); //подбиваем сумму и видим что наш заказ появился в админке

Это минимальные данные нужные для оформления заказа (кол-во элементов в массиве можно уменьшить, заполнив только необходимые поля).

Так же вы можете использовать методы описсаные на странице WooCommerce API: http://docs.woothemes.com/wc-apidocs/class-WC_Order.html. Я для сокращённой формы заказ использовал так-же:

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

Похожие записи

4 комментария

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *