- Add DDHH_JM_Roles class with add_roles() and remove_roles() methods - Role 'ddhh_provider' (Anbieter) can edit/delete own job_offers only - Jobs go to pending status (publish_job_offers: false) - No access to regular posts/pages (edit_posts/edit_pages: false) - Can upload files for logos - Integrated with Activator and Deactivator hooks
63 lines
1.4 KiB
PHP
63 lines
1.4 KiB
PHP
<?php
|
|
/**
|
|
* User roles handler
|
|
*
|
|
* @package DDHH_Job_Manager
|
|
*/
|
|
|
|
// Exit if accessed directly.
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
/**
|
|
* Handles custom user roles
|
|
*/
|
|
class DDHH_JM_Roles {
|
|
|
|
/**
|
|
* Add custom roles
|
|
* Called on plugin activation
|
|
*/
|
|
public static function add_roles() {
|
|
// Register ddhh_provider role
|
|
add_role(
|
|
'ddhh_provider',
|
|
__( 'Anbieter', 'ddhh-job-manager' ),
|
|
array(
|
|
// Basic WordPress access
|
|
'read' => 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' );
|
|
}
|
|
}
|