diff --git a/includes/class-ddhh-job-manager.php b/includes/class-ddhh-job-manager.php index e53b31b..77bf2f8 100644 --- a/includes/class-ddhh-job-manager.php +++ b/includes/class-ddhh-job-manager.php @@ -50,6 +50,9 @@ class DDHH_JM_Job_Manager { // Initialize post types add_action( 'init', array( 'DDHH_JM_Post_Types', 'register' ) ); + // Upgrade roles with any new capabilities + add_action( 'init', array( 'DDHH_JM_Roles', 'upgrade_roles' ) ); + // Initialize ACF fields add_action( 'acf/init', array( 'DDHH_JM_ACF_Fields', 'register_fields' ) ); diff --git a/includes/class-roles.php b/includes/class-roles.php index f494a5d..39bed82 100644 --- a/includes/class-roles.php +++ b/includes/class-roles.php @@ -28,6 +28,7 @@ class DDHH_JM_Roles { // Job offer capabilities (own only) 'edit_job_offers' => true, + 'edit_published_job_offers' => true, 'delete_job_offers' => true, 'upload_files' => true, @@ -70,11 +71,28 @@ class DDHH_JM_Roles { } } + /** + * Upgrade existing roles with new capabilities + * Called on plugin init to ensure all capabilities are present + */ + public static function upgrade_roles() { + $provider_role = get_role( 'ddhh_provider' ); + if ( $provider_role && ! $provider_role->has_cap( 'edit_published_job_offers' ) ) { + $provider_role->add_cap( 'edit_published_job_offers' ); + } + } + /** * Remove custom roles * Called on plugin deactivation */ public static function remove_roles() { + // Remove provider role capabilities before removing role + $provider_role = get_role( 'ddhh_provider' ); + if ( $provider_role ) { + $provider_role->remove_cap( 'edit_published_job_offers' ); + } + remove_role( 'ddhh_provider' ); // Remove job_offer capabilities from administrator