wordpress - Woocommerce 以编程方式创建订单不起作用
问题描述
我正在尝试以编程方式创建 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();
请帮助解决这个问题。
非常感谢
解决方案
问题是 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')
);
}
然后创建您的订单。
推荐阅读
- excel - 如果满足多个条件,则选择语句
- sql - 文本名称上的 SQL 连接表(而不是按 id)
- abaqus - 在 Abaqus 中的 *Instance entry 中计算平移和旋转轴和角度
- javascript - 使用 vuex mapGetters 在用户的状态 obj 中进行迭代
- python - 在我的 Python 脚本中从 Delphi DLL 获取 PChar 参数
- c++ - 如何使用 ndk-build.cmd 构建 Android .so 文件
- node.js - 为什么等待后的布尔赋值会触发原子更新错误?
- excel - Excel宏循环范围
- sapui5 - SAP Cloud 应用程序编程模型集成
- android - 如何使 Android RecyclerView 响应最初适合屏幕?