我希望禁用自动完成订单,但仅对那些金额高于30欧元的订单禁用。所有产品都是虚拟的。
我在网上发现了此功能:
add_action( 'woocommerce_thankyou', 'stop_auto_complete_order' );
function stop_auto_complete_order( $order_id ) {
if ( ! $order_id ) {
return;
}
$order = wc_get_order( $order_id );
$order->update_status( 'processing' );
}
但是,我不知道只有在订单金额高于特定金额的情况下才可以制作。
答案 0 :(得分:1)
您需要使用一些WC_Order
methods,例如:
get_total()
get_status()
根据您的代码,以下内容将:
代码:
add_action( 'woocommerce_thankyou', 'stop_auto_complete_order' );
function stop_auto_complete_order( $order_id ) {
if ( ! $order_id ) {
return;
}
$order = wc_get_order( $order_id );
// Auto-complete paid orders up to 30 (for "on-hold" and "processing" order statuses)
if ( $order->get_total() <= 30 && in_array( $order->get_status(), [ 'on-hold', 'processing' ] ) ) {
$order->update_status( 'completed' );
}
// Other paid orders are set to "processing" status
elseif( $order->get_status() === 'on-hold' ) {
$order->update_status( 'processing' );
}
}
代码进入活动子主题(或活动主题)的functions.php文件中。经过测试,可以正常工作。