Last active
February 3, 2026 09:04
-
-
Save thisissandip/54ec2f135c19614ab72f9a4feed8b405 to your computer and use it in GitHub Desktop.
Custom Roles for WooCommerce: Fulfilment Operator & Store Operator
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function wccr_add_roles_snippet() { | |
| // Uncomment these "Remove" lines ONCE if you change capabilities below and need to refresh the roles. | |
| // remove_role( 'fulfilment_operator' ); | |
| // remove_role( 'store_operator' ); | |
| // 1. Fulfilment Operator | |
| add_role( | |
| 'fulfilment_operator', | |
| __( 'Fulfilment Operator', 'woocommerce' ), | |
| array( | |
| 'read' => true, | |
| 'manage_woocommerce' => false, | |
| 'view_woocommerce_reports' => false, | |
| // Order Capabilities | |
| 'edit_shop_order' => true, | |
| 'read_shop_order' => true, | |
| 'edit_shop_orders' => true, | |
| 'edit_others_shop_orders' => true, | |
| 'publish_shop_orders' => true, | |
| 'read_private_shop_orders' => true, | |
| 'delete_shop_orders' => true, | |
| 'delete_others_shop_orders' => true, | |
| 'delete_private_shop_orders' => true, | |
| ) | |
| ); | |
| // 2. Store Operator | |
| add_role( | |
| 'store_operator', | |
| __( 'Store Operator', 'woocommerce' ), | |
| array( | |
| 'read' => true, | |
| 'manage_woocommerce' => false, | |
| 'view_woocommerce_reports' => true, | |
| 'upload_files' => true, | |
| // Order Capabilities | |
| 'edit_shop_order' => true, | |
| 'read_shop_order' => true, | |
| 'edit_shop_orders' => true, | |
| 'edit_others_shop_orders' => true, | |
| 'publish_shop_orders' => true, | |
| 'read_private_shop_orders' => true, | |
| 'delete_shop_orders' => true, | |
| 'delete_others_shop_orders' => true, | |
| 'delete_private_shop_orders' => true, | |
| // Product Capabilities | |
| 'edit_product' => true, | |
| 'read_product' => true, | |
| 'delete_product' => true, | |
| 'edit_products' => true, | |
| 'edit_others_products' => true, | |
| 'publish_products' => true, | |
| 'read_private_products' => true, | |
| 'delete_products' => true, | |
| 'delete_private_products' => true, | |
| 'delete_others_products' => true, | |
| 'edit_published_products' => true, | |
| 'delete_published_products' => true, | |
| // Term Capabilities | |
| 'manage_product_terms' => true, | |
| 'edit_product_terms' => true, | |
| 'delete_product_terms' => true, | |
| 'assign_product_terms' => true, | |
| ) | |
| ); | |
| } | |
| add_action( 'init', 'wccr_add_roles_snippet' ); | |
| /** | |
| * Grant admin access to custom roles. | |
| */ | |
| function wccr_grant_admin_access_snippet( $prevent ) { | |
| if ( current_user_can( 'fulfilment_operator' ) || current_user_can( 'store_operator' ) ) { | |
| return false; | |
| } | |
| return $prevent; | |
| } | |
| add_filter( 'woocommerce_prevent_admin_access', 'wccr_grant_admin_access_snippet' ); | |
| add_filter( 'woocommerce_disable_admin_bar', 'wccr_grant_admin_access_snippet' ); | |
| function wccr_remove_menu_items_snippet() { | |
| if ( current_user_can( 'fulfilment_operator' ) || current_user_can( 'store_operator' ) ) { | |
| // Remove "Home" (Analytics/Overview) | |
| remove_submenu_page( 'woocommerce', 'wc-admin' ); | |
| } | |
| } | |
| add_action( 'admin_menu', 'wccr_remove_menu_items_snippet', 99 ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment