Wordpress 以编程方式创建订单无效

Wordpress 以编程方式创建订单无效,wordpress,woocommerce,Wordpress,Woocommerce,我试图以编程方式创建商业订单。 它对登录的用户很好,但当我尝试使用来宾帐户创建它时,它就不起作用了。 这是我的密码 $cart = WC()->cart; $order_data = array( 'status' => apply_filters('woocommerce_default_order_status', 'pending'), 'customer_id' => get_current_user_id()

我试图以编程方式创建商业订单。 它对登录的用户很好,但当我尝试使用来宾帐户创建它时,它就不起作用了。 这是我的密码

$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();
请帮忙


非常感谢

问题是get_current_user_id()如果找不到用户,则返回0。当您将0作为客户id传递时,它将破坏创建订单

尝试:


然后创建您的订单。

谢谢您的回复。但它不起作用。实际上,出于测试目的,我尝试了$order=wc_create_order();它也适用于登录用户,但不适用于来宾用户。不知道为什么。仅供参考,它是Woocommerce 3.7.0
$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')
    );
}