Pee*_*n87 4 php wordpress checkout orders woocommerce
创建woocommerce订单时,订单的状态为"正在处理".我需要将默认订单状态更改为"待定".
我怎样才能做到这一点?
Loi*_*tec 13
默认订单状态由付款方式或支付网关设置.
您可以尝试使用此自定义钩子函数,但它不起作用 (因为此挂钩在付款方式和支付网关之前被触发):
add_action( 'woocommerce_checkout_order_processed', 'changing_order_status_before_payment', 10, 3 );
function changing_order_status_before_payment( $order_id, $posted_data, $order ){
$order->update_status( 'pending' );
}
Run Code Online (Sandbox Code Playgroud)
显然,每种支付方式(和支付网关)都在设置订单状态(取决于支付网关的交易响应)......
对于货到付款方式,可以使用专用过滤器挂钩进行调整,请参阅:
在Woocommerce中将货到付款默认订单状态更改为"暂停"而不是"处理"
现在,您可以使用 hook 更新订单状态:woocommerce_thankyou
add_action( 'woocommerce_thankyou', 'woocommerce_thankyou_change_order_status', 10, 1 );
function woocommerce_thankyou_change_order_status( $order_id ){
if( ! $order_id ) return;
$order = wc_get_order( $order_id );
if( $order->get_status() == 'processing' )
$order->update_status( 'pending' );
}
Run Code Online (Sandbox Code Playgroud)
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中.
经过测试和工作
注意:
woocommerce_thankyou每次加载订单接收页面时都会触发挂钩,因此需要小心使用...
现在上面的功能将仅在第一次更新订单状态.如果客户重新加载页面,则IF语句中的条件将不再匹配,并且不会发生任何其他情况.
相关主题:WooCommerce:自动完成付款订单(取决于付款方式)
| 归档时间: |
|
| 查看次数: |
10809 次 |
| 最近记录: |