woocommerce change order statuses count for specific role

Normally pre_get_post doesn’t change wordpress views post count. You have to call another filter hook to change to count.

add_action('pre_get_posts', function ($query) {
global $pagenow;
if (isset($query->query_vars['post_type'])) {
    if ($query->query_vars['post_type'] == 'shop_order' && ('edit.php' == $pagenow)) {

        if (!$query->is_main_query()) {
            return;
        }
        // I manipulate $query here

        // Get Post Count Here For Each Status

        add_filter( 'views_edit-shop_order', function( $views ) {

            $views['all'] = sprintf("<a href="https://wordpress.stackexchange.com/questions/354421/%s">All (%d)", $url_to_redirect, $all_count );
            $views['wc-processing'] = sprintf("<a href="https://wordpress.stackexchange.com/questions/354421/%s">Processing (%d)", $url_to_redirect, $processing_count );
            $views['wc-completed'] = sprintf("<a href="https://wordpress.stackexchange.com/questions/354421/%s">Completed (%d)", $url_to_redirect, $completed_count );
            $views['wc-failed'] = sprintf("<a href="https://wordpress.stackexchange.com/questions/354421/%s">Failed (%d)", $url_to_redirect, $failed_count );

            return $views;

            // Sample array we get print_r( $views )
            Array
            (
                [all] => All (24)
                [wc-processing] => Processing (3)
                [wc-completed] => Completed (19)
                [wc-failed] => Failed (2)
            )
        });
    }
}
}, 1000, 1);