Как правильно обработать форму создания заказа?
Добрый день, я пишу магазин на вордпресс и дошёл до создания заказа. Написал свою страницу и свою форму обработки
Я не знаю, как правильно обрабатывать форму создания заказа и на данный момент ,мой код создания заказа выглядит так
В чём собственно проблема - я не могу получить корзину товара. Как я только не пытался. Класс WC не инициализирован, пошёл другим путём, сделал
Но при вызове
Получаю null и естественно вызывая метод
Получаю ошибку. Что я делаю не так?
<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();
Получаю ошибку. Что я делаю не так?
Смотрите также:
В комментариях запрещаются спам, а также реклама любых товаров и услуг, иных ресурсов.