在 WooCommerce 管理订单列表中仅显示当前用户的订单

问题描述 投票:0回答:1

我已经创建了一个自定义角色“Marron”,他可以访问 WordPress 仪表板并查看所有 WooCommerce 订单。

但我希望“Marron”用户角色能够在 WP 管理仪表板中仅查看自己的订单。 (只看没有编辑功能。)

我尝试过用户角色编辑器插件,但没有一个提供此类功能。有什么建议吗?

php wordpress woocommerce orders user-roles
1个回答
0
投票

您可以使用以下功能代码,将在管理订单列表中显示当前用户订单,仅适用于定义的用户角色(在下面的代码中设置您的用户角色SLUG

add_action( 'pre_get_posts', 'filter_admin_orders_list_user_orders' );
function filter_admin_orders_list_user_orders( $query ) {
    global $pagenow, $typenow, $current_user;

    $user_role = 'marron'; // <== Here set the desire user role SLUG

    // Targeting WooCommerce admin orders list only
    if ( 'edit.php' === $pagenow && 'shop_order' === $typenow && in_array($user_role, $current_user->roles) ){
        $query->set('meta_query', array( array(
            'key' => '_customer_user',
            'value' => $current_user->ID,
        ) ) );
        
    }
    return $query;
}

代码位于子主题的functions.php 文件中(或插件中)。已测试并有效。

© www.soinside.com 2019 - 2024. All rights reserved.