Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- function pre_manage_custom_user_roles() {
- /**
- * New Role: Company
- * ...
- */
- $company_capabilities = array(
- 'read' => true,
- 'read_cpts' => true,
- 'edit_cpts' => true,
- 'delete_cpts' => true,
- 'upload_files' => true,
- 'assign_cpt_types' => true, //custom taxonomy 'cpt_types'
- 'assign_cpt_categories' => true, //custom taxonomy 'cpt_categories'
- 'read_companies' => true,
- 'edit_companies' => true,
- );
- add_role(
- 'company',
- __('Company', 'textdomain'),
- $company_capabilities
- );
- /**
- * Assign all the new caps to Default roles
- * ...
- */
- $admin_custom_capabilities = array(
- 'read' => true,
- 'read_cpts' => true,
- 'edit_cpts' => true,
- 'delete_cpts' => true,
- 'delete_published_cpts' => true,
- 'edit_published_cpts' => true,
- 'publish_cpts' => true,
- 'upload_files' => true,
- //CPT Types
- 'manage_cpt_types' => true,
- 'edit_cpt_types' => true,
- 'delete_cpt_types' => true,
- 'assign_cpt_types' => true,
- //CPT Categories
- 'manage_cpt_categories' => true,
- 'edit_cpt_categories' => true,
- 'delete_cpt_categories' => true,
- 'assign_cpt_categories' => true,
- //Companies
- 'read_companies' => true,
- 'edit_companies' => true,
- 'edit_published_companies' => true,
- 'delete_companies' => true,
- 'delete_published_companies'=> true,
- 'publish_companies' => true,
- //Priviledges over others
- 'edit_others_cpts' => true,
- 'edit_others_companies' => true
- );
- //Assigning all the custom user-capabilities to the Upper level users, except 'author'
- $default_roles = array( 'administrator', 'editor' );
- foreach ( $default_roles as $default_role ) {
- $role = get_role( $default_role );
- if( is_null( $role ) )
- continue;
- foreach ( $admin_custom_capabilities as $company_capability => $enabled ) {
- if( $enabled ) {
- $role->add_cap( $company_capability );
- }
- }
- }
- unset( $role );
- /**
- * Editors: Let them manage users, but not Administrators
- * @author Isabel Castillo
- * @link http://isabelcastillo.com/editor-role-manage-users-wordpress
- * ...
- */
- if ( get_option( 'pre_editor_can_manage_users' ) != 'true' ) {
- $edit_editor = get_role('editor'); // Get the user role
- $edit_editor->add_cap('edit_users');
- $edit_editor->add_cap('list_users');
- $edit_editor->add_cap('promote_users');
- $edit_editor->add_cap('create_users');
- $edit_editor->add_cap('add_users');
- $edit_editor->add_cap('delete_users');
- //Just to stop duplicate occurances
- update_option( 'pre_editor_can_manage_users', 'true' );
- }
- //For debugging purpose only
- //remove_role( 'company' );
- }
- add_action( 'after_switch_theme', 'pre_manage_custom_user_roles' );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement