-1

I Already Created a custom role "Marron" who can access WordPress dashboard and see all WooCommerce orders.

But I want that "Marron" user role to be able to see only own orders in WP Admin Dashboard. (Just see without editing capabilities.)

I tried user role editor plugins, but none of them offers such functionality. Any suggestions?

LoicTheAztec
  • 229,944
  • 23
  • 356
  • 399
Gelebrin7
  • 53
  • 6

1 Answers1

1

You can use the following function code, that will display the current user orders in admin orders list, only for a defined user role (setting your user role SLUG in the code below):

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;
}

Code goes in functions.php file of your child theme (or in a plugin). Tested and works.

LoicTheAztec
  • 229,944
  • 23
  • 356
  • 399