Создать акаунт
Всё для вебмастера » Вопросы и ответы » CMS » WordPress » Как правильно обработать форму создания заказа?

Как правильно обработать форму создания заказа?

18 апр 2023, 09:00
WordPress
133
0
Добрый день, я пишу магазин на вордпресс и дошёл до создания заказа. Написал свою страницу и свою форму обработки
<form method="POST" action="<?php echo esc_url(admin_url('admin-post.php')); ?>">/// код формы</form>

Я не знаю, как правильно обрабатывать форму создания заказа и на данный момент ,мой код создания заказа выглядит так
add_action('admin_post_create_order', 'create_order');add_action('admin_post_nopriv_create_order', 'create_order');function create_order(){    global $woocommerce;    // var_dump(123);    // print_r($_POST);    $order = wc_create_order();    $cards = $woocommerce->cart;    var_dump($cards);    exit;    //заполняем заказ товаром    foreach ($cards as $cart_item_key => $cart_item) {        $product = $cart_item['data'];        $product_id = $product->get_id();        $quantity = $cart_item['quantity'];        $subtotal = $cart_item['line_subtotal'];        // Добавляем товар в заказ        $order->add_product($product, $quantity);        // Добавляем мета-данные для товара в заказ        $order->update_meta_data('_product_id', $product_id, $cart_item_key);        $order->update_meta_data('_quantity', $quantity, $cart_item_key);        $order->update_meta_data('_subtotal', $subtotal, $cart_item_key);    }    $order->set_billing_email($_POST["email"]);    $order->set_billing_first_name($_POST["name"]);    $order->set_billing_last_name($_POST["last_name"]);    $order->set_billing_address_1($_POST["address"]);    // $order->set_billing_city('');    // $order->set_billing_state('CA');    // $order->set_billing_postcode('12345');    $order->set_billing_country('EU');    $order->set_billing_phone($_POST["phone"]);    // устанавливаем способ оплаты    $payment_gateways = WC()->payment_gateways->get_available_payment_gateways();    // $order->set_payment_method($payment_gateways['paypal']);    // сохраняем заказ    $order->calculate_totals();    $order->save();    wp_redirect(get_page_link(38, false, true));    wp_die();}

В чём собственно проблема - я не могу получить корзину товара. Как я только не пытался. Класс WC не инициализирован, пошёл другим путём, сделал
global $woocommerce;
Но при вызове
$woocommerce->cart;
Получаю null и естественно вызывая метод
$cards = $woocommerce->cart->get_cart();
Получаю ошибку. Что я делаю не так?

Внимание! Как правильно обработать форму создания заказа? предоставлен пользователями сайта исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.

Смотрите также:

Комментарии к Как правильно обработать форму создания заказа?
Добавить Комментарий
В комментариях запрещаются спам, а также реклама любых товаров и услуг, иных ресурсов.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.