根据 Woocommerce 中的用户角色更改 COD 支付网关的默认订单状态
Change default order status for COD payment gateway based on user role in Woocommerce
在 Woocommerce 中,当支付选项为 COD 时,订单会直接进入 "Processing" 状态。
来源:https://docs.woocommerce.com/document/managing-orders/#prettyPhoto
我需要它像这样工作,除非客户的角色是 "X"。
我看到可以用这段代码解决这个问题:
function cod_payment_method_order_status_to_onhold( $order_id ) {
if ( ! $order_id )
return;
$order = wc_get_order( $order_id );
if ( get_post_meta($order->id, '_payment_method', true) == 'cod' )
$order->update_status( 'on-hold' );
}
add_action( 'woocommerce_thankyou', 'cod_payment_method_order_status_to_onhold', 10, 1 );
但是,问题是它经过 "Processing",发送电子邮件,然后转到 "on hold"。我想避免发送 "Processing" 邮件
有什么办法吗?谢谢!
您最好使用 woocommerce_cod_process_payment_order_status
专用过滤器挂钩。您必须将 "administrator" 用户角色替换为您的 "X" 角色。
钩子函数代码:
add_filter( 'woocommerce_cod_process_payment_order_status', 'set_cod_process_payment_order_status_on_hold', 10, 2 );
function set_cod_process_payment_order_status_on_hold( $status, $order ) {
$user_data = get_userdata( $order->get_customer_id() );
if( ! in_array( 'administrator', $user_data->roles ) )
return 'on-hold';
return $status;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
在 Woocommerce 中,当支付选项为 COD 时,订单会直接进入 "Processing" 状态。
来源:https://docs.woocommerce.com/document/managing-orders/#prettyPhoto
我需要它像这样工作,除非客户的角色是 "X"。
我看到可以用这段代码解决这个问题:
function cod_payment_method_order_status_to_onhold( $order_id ) {
if ( ! $order_id )
return;
$order = wc_get_order( $order_id );
if ( get_post_meta($order->id, '_payment_method', true) == 'cod' )
$order->update_status( 'on-hold' );
}
add_action( 'woocommerce_thankyou', 'cod_payment_method_order_status_to_onhold', 10, 1 );
但是,问题是它经过 "Processing",发送电子邮件,然后转到 "on hold"。我想避免发送 "Processing" 邮件
有什么办法吗?谢谢!
您最好使用 woocommerce_cod_process_payment_order_status
专用过滤器挂钩。您必须将 "administrator" 用户角色替换为您的 "X" 角色。
钩子函数代码:
add_filter( 'woocommerce_cod_process_payment_order_status', 'set_cod_process_payment_order_status_on_hold', 10, 2 );
function set_cod_process_payment_order_status_on_hold( $status, $order ) {
$user_data = get_userdata( $order->get_customer_id() );
if( ! in_array( 'administrator', $user_data->roles ) )
return 'on-hold';
return $status;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。