创建订单时通过代码添加自定义订单项元数据遇阻
通过自定义钩子创建带订单项元数据的WooCommerce后台订单
我试过多种代码方案都没奏效,最终通过自定义事件调用自定义钩子及函数,实现了创建包含已有产品且带有自定义订单项元数据的订单,相关代码如下:
function create_order($product_id, $customer_phone, $customer_email, $customer_name, $extra_service_id, $extra_service_name) { $args = array( 'Service ID' => $extra_service_id, 'Service Name' => $extra_service_name ); $quantity = 1; $product = wc_get_product($product_id); $order = wc_create_order(); $order->add_product( $product, $quantity, $args); $address = array( 'first_name' => $customer_name, 'email' => $customer_email, 'phone' => $customer_phone ); $order->set_address( $address, 'billing' ); $order->set_status( 'wc-on-hold', 'Made in back-end' ); $order->calculate_totals(); $order->save(); } add_action('create_order_hook', 'create_order', 10, 6);
关键说明
- 自定义钩子
create_order_hook是触发订单创建的入口,调用时必须传入6个对应参数 $args数组中的内容会作为订单项的自定义元数据绑定到对应产品条目上- 订单默认设置为「待处理(wc-on-hold)」状态,备注标记为后台创建
- 调用
calculate_totals()会自动计算订单的税费、运费等总额,确保订单数据完整
内容的提问来源于stack exchange,提问作者Pablo Savigne
相关产品推荐
相关产品推荐

