diff --git a/includes/class-activator.php b/includes/class-activator.php index 6a6f1ba..e647c3f 100644 --- a/includes/class-activator.php +++ b/includes/class-activator.php @@ -30,6 +30,9 @@ class DDHH_JM_Activator { // Store plugin version update_option( 'ddhh_jm_version', DDHH_JM_VERSION ); + // Register custom roles + DDHH_JM_Roles::add_roles(); + // Set flag to flush rewrite rules on next init set_transient( 'ddhh_jm_flush_rewrite_rules', 1, 60 ); } diff --git a/includes/class-deactivator.php b/includes/class-deactivator.php index 8ae569c..f64494f 100644 --- a/includes/class-deactivator.php +++ b/includes/class-deactivator.php @@ -17,6 +17,9 @@ class DDHH_JM_Deactivator { * Deactivation logic */ public static function deactivate() { + // Remove custom roles + DDHH_JM_Roles::remove_roles(); + // Flush rewrite rules flush_rewrite_rules(); } diff --git a/includes/class-roles.php b/includes/class-roles.php new file mode 100644 index 0000000..d3e688a --- /dev/null +++ b/includes/class-roles.php @@ -0,0 +1,62 @@ + true, + + // Job offer capabilities (own only) + 'edit_job_offers' => true, + 'delete_job_offers' => true, + 'upload_files' => true, + + // Explicitly deny publishing (jobs go to pending for admin approval) + 'publish_job_offers' => false, + + // Explicitly deny editing others' content + 'edit_others_job_offers' => false, + + // Explicitly deny access to regular posts/pages + 'edit_posts' => false, + 'edit_pages' => false, + 'edit_others_posts' => false, + 'edit_others_pages' => false, + 'publish_posts' => false, + 'publish_pages' => false, + + // Explicitly deny admin functions + 'manage_categories' => false, + 'manage_options' => false, + ) + ); + } + + /** + * Remove custom roles + * Called on plugin deactivation + */ + public static function remove_roles() { + remove_role( 'ddhh_provider' ); + } +}