A good alternative is to add some custom CSS to hide "Add Order" buttons targeting conditionally user roles capabilities, in a custom function hooked in admin_head
action hook:
add_action( 'admin_head', 'my_custom_admin_styles' );
function my_custom_admin_styles() {
// HIDE "New Order" button when current user don't have 'manage_options' admin user role capability
if( ! current_user_can( 'manage_options' ) ):
?>
<style>
.post-type-shop_order #wpbody-content > div.wrap > a.page-title-action{
display: none !important;
}
</style>
<?php
endif;
}
Code goes in function.php file of your active child theme (or theme) or also in any plugin file.
Tested and perfectly works.