I'm currently using the woocommerce-readonly-role this plugin to disable the ability to edit for a specific user where they only are able to view orders instead of editing just for shipping purposes in woocommerce. However, I need to enable some of the buttons to be editable, and I actually have some other features/custom code in the orders and need to enable it to be editable. Hence, in the current plugin I'm using, no matter which features I've added on, it is still unable to edit as I assuming the plugin is disabling the whole 'clickable' button on the order page regardless of additional features I added into order page.
So, I'm planning to be selective on which button is not accessible for the specific user. The main issue is how do I disable edit (only enable readonly) more button / field edit including for shop manager only as below: You image reference may view from here: https://snipboard.io/AtOWBY.jpg
add_filter( 'woocommerce_register_post_type_shop_order','your_function_name' );
function your_function_name($fields) {
$fields['capabilities'] = array(
'create_posts' => false,
);
return $fields;
}
/**
* Enqueue a script in the WordPress admin, excluding edit.php.
*
* @param int $hook Hook suffix for the current admin page.
*/
function wpdocs_selectively_enqueue_admin_script( $hook ) {
// if ( 'edit.php' != $hook ) {
// return;
// }
wp_enqueue_script( 'my_custom_woocommerce_script', get_template_directory_uri() . '/woocommerce/assets/meta-boxes-order.js', array(), '1.0' );
}
add_action( 'admin_enqueue_scripts', 'wpdocs_selectively_enqueue_admin_script' );
jQuery(document).ready(function(){
alert("ok"); // only for testing purpose that this file is loaded
jQuery(".order_data_column_container .order_data_column p:eq(0) input").attr('disabled', true);
});
However, it does not work and how can I amend the function which gets executed ONLY for "shop manager" role )
I was searching a lot for below too, but I can't find the file that I have to change for below, where it only can view and non editable.
Disable Customer
disable product link (only able to view product & its SKU instead of clicking redirect to edit product page)
Disable Order Action
Disable custom field
Disable Add New Custom Field
Disable downloadable permission
Use get_current_user()
, this way you can get user object then check user's role from the object and if it is shop manager then apply your code as you mentioned.
add_filter( 'woocommerce_register_post_type_shop_order','your_function_name' );
function your_function_name($fields) {
$user = wp_get_current_user();
if ( in_array( 'shop_manager', (array) $user->roles ) ) {
$fields['capabilities'] = array(
'create_posts' => false,
);
return $fields;
} else {
return $fields;
}
}