Програмное добавление заказов в WooCommerce
-
Добавляю заказы через ajax следующим образом:
function roomble_ajax_create_order() {
// Получить корзину
$cart = WC()->cart;$phone = esc_attr( trim( $_REQUEST[‘phone’] ) );
$email = esc_attr( trim( $_REQUEST[’email’] ) );
$name = esc_attr( trim( $_REQUEST[‘name’] ) );$address = [
‘first_name’ => $name,
’email’ => $email,
‘phone’ => $phone,
‘country’ => ‘RU’,
];$order = wc_create_order();
// Информация о покупателе
$order->set_address( $address, ‘billing’ );
$order->set_address( $address, ‘shipping’ );// Товары из корзины
foreach( $cart->get_cart() as $cart_item_key => $cart_item ) {$_product = apply_filters( ‘woocommerce_cart_item_product’, $cart_item[‘data’], $cart_item, $cart_item_key );
$product_id = apply_filters( ‘woocommerce_cart_item_product_id’, $cart_item[‘product_id’], $cart_item, $cart_item_key );$order->add_product( $_product, $cart_item[‘quantity’] );
}// Добавить купоны
foreach ( $cart->get_coupons() as $code => $coupon ) {
$order->add_coupon( $code, $cart->get_coupon_discount_amount( $code ), $cart->get_coupon_discount_tax_amount( $code ) );
}$order->calculate_totals();
// Отправить письмо юзеру
$mailer = WC()->mailer();
$email = $mailer->emails[‘WC_Email_Customer_Processing_Order’];
$email->trigger( $order->id );// Отправить письмо админу
$email = $mailer->emails[‘WC_Email_New_Order’];
$email->trigger( $order->id );// Очистить корзину
$cart->empty_cart();// Автоматом добавим юзера в лист рассылки
if ( $email ) {
roomble_mailchimp_subscribe( $email, $name );
}wp_send_json_success( $order->id );
}
add_action( ‘wp_ajax_create_order’, ‘roomble_ajax_create_order’ );
add_action( ‘wp_ajax_nopriv_create_order’, ‘roomble_ajax_create_order’ );Столкнулся с такой проблемой, что купоны нормально добавляются к заказу и отображаются, но скидка не считается. Если зайти в админку в редактирование заказа — вижу примененный купон, а итоговая сумма не изменилась, что я делаю не так?
- Тема «Програмное добавление заказов в WooCommerce» закрыта для новых ответов.