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