Woocommerce создает заказ программно не работает - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь создать заказ woocommerce программно. Он отлично работает для зарегистрированных пользователей, но когда я пытаюсь создать его с помощью гостевой учетной записи, он не работает. Вот мой код

$cart = WC()->cart;
$order_data = array(
              'status' => apply_filters('woocommerce_default_order_status', 'pending'),
              'customer_id' => get_current_user_id()
            );
            $checkout = WC()->checkout();
            $order_id = $checkout->create_order($order_data);
            $order = wc_get_order( $order_id );
            update_post_meta($order_id, '_customer_user', get_current_user_id());
            $order->calculate_totals();

Пожалуйста, помогите с этим.

Большое спасибо

1 Ответ

0 голосов
/ 11 октября 2019

Проблема в том, что get_current_user_id () возвращает 0, если не может найти пользователя. Когда вы передаете 0 как customer_id, это нарушает порядок создания.

Попробуйте:

$user_id = get_current_user_id();
if($user_id != 0){
    $order_data = array(
        'status' => apply_filters('woocommerce_default_order_status', 'pending'),
        'customer_id' => get_current_user_id()
     );
} else {
    $order_data = array(
        'status' => apply_filters('woocommerce_default_order_status', 'pending')
    );
}

Затем создайте свой заказ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...