繁体   English   中英

WooCommerce 自动将特定用户角色的订单设置为“已完成”状态

[英]WooCommerce auto set orders to “completed” status for a specific user role

基于在 Woocommerce 答案代码中将 COD 默认订单状态更改为“暂停”而不是“处理中” ,我已将默认状态更改为“已完成”,如何设置默认情况下使用货到付款方式的订单(COD ) 到特定用户角色的“完成”状态?

代码中缺少的是特定的用户角色。 如何定位特定的用户角色?

这将允许我使用默认的 WooCommerce 购物车体验来处理农贸市场的现金交易,而无需返回 go 并记住忙碌和过热一天的特定交易。 这也意味着除了汇总现金抽屉和过滤订单记录之外不需要对帐,因为 WooCommerce 存储是唯一的事实来源。

您可以使用WC_Order get_user()方法定位特定用户角色,您将能够获取用户角色,如下所示:

$user = $order->get_user(); // Get user

$user_roles = $user->roles; // Get user roles

请参阅: 如何从 WooCommerce 的订单中获取客户详细信息?

然后,现在您将为特定用户角色将 COD 付款的订单设置为“已完成状态”:

add_filter( 'woocommerce_cod_process_payment_order_status', 'change_cod_payment_order_status', 10, 2 );
function change_cod_payment_order_status( $order_status, $order ) {
    // Get user
    $user = $order->get_user();

    $targeted_user_role = 'administrator'; // Here define user role

    if ( in_array( $targeted_user_role, $user->roles ) )
        return 'completed';

    return $order_status;
}

代码进入您的活动子主题(活动主题)的functions.php文件。 测试和工作。


然后在结帐时,如果您希望允许 COD 付款,仅针对特定用户角色,请同时使用:

add_filter( 'woocommerce_available_payment_gateways', 'custom_available_payment_gateways' );
function custom_available_payment_gateways( $available_gateways ) {
    // Not in backend (admin)
    if( is_admin() ) 
        return $available_gateways;

    $targeted_user_role = 'administrator'; // Here define user role

    if ( ! current_user_can( $targeted_user_role && isset( $available_gateways['cod'] ) )
        unset( $available_gateways['cod'] );
    }

    return $available_gateways;
} 

代码进入您的活动子主题(活动主题)的functions.php文件。 测试和工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM