Advertisement
wzislam

Adding User Role

Feb 23rd, 2016
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.80 KB | None | 0 0
  1. <?php
  2. function pre_manage_custom_user_roles() {
  3.    
  4.     /**
  5.      * New Role: Company
  6.      * ...
  7.      */
  8.     $company_capabilities = array(
  9.             'read'                      => true,
  10.             'read_cpts'                 => true,
  11.             'edit_cpts'                 => true,
  12.             'delete_cpts'               => true,
  13.             'upload_files'              => true,
  14.  
  15.             'assign_cpt_types'          => true, //custom taxonomy 'cpt_types'
  16.             'assign_cpt_categories'     => true, //custom taxonomy 'cpt_categories'
  17.  
  18.             'read_companies'            => true,
  19.             'edit_companies'            => true,
  20.         );
  21.  
  22.     add_role(
  23.             'company',
  24.             __('Company', 'textdomain'),
  25.             $company_capabilities
  26.         );
  27.  
  28.     /**
  29.      * Assign all the new caps to Default roles
  30.      * ...
  31.      */
  32.     $admin_custom_capabilities = array(
  33.             'read'                      => true,
  34.             'read_cpts'                 => true,
  35.             'edit_cpts'                 => true,
  36.             'delete_cpts'               => true,
  37.             'delete_published_cpts'     => true,
  38.             'edit_published_cpts'       => true,
  39.             'publish_cpts'              => true,
  40.             'upload_files'              => true,
  41.  
  42.             //CPT Types
  43.             'manage_cpt_types'          => true,
  44.             'edit_cpt_types'            => true,
  45.             'delete_cpt_types'          => true,
  46.             'assign_cpt_types'          => true,
  47.  
  48.             //CPT Categories
  49.             'manage_cpt_categories'     => true,
  50.             'edit_cpt_categories'       => true,
  51.             'delete_cpt_categories'     => true,
  52.             'assign_cpt_categories'     => true,
  53.  
  54.             //Companies
  55.             'read_companies'            => true,
  56.             'edit_companies'            => true,
  57.             'edit_published_companies'  => true,
  58.             'delete_companies'          => true,
  59.             'delete_published_companies'=> true,
  60.             'publish_companies'         => true,
  61.            
  62.             //Priviledges over others
  63.             'edit_others_cpts'          => true,
  64.             'edit_others_companies'     => true
  65.         );
  66.  
  67.     //Assigning all the custom user-capabilities to the Upper level users, except 'author'
  68.     $default_roles = array( 'administrator', 'editor' );
  69.     foreach ( $default_roles as $default_role ) {
  70.         $role = get_role( $default_role );
  71.  
  72.         if( is_null( $role ) )
  73.             continue;
  74.  
  75.         foreach ( $admin_custom_capabilities as $company_capability => $enabled ) {
  76.             if( $enabled ) {
  77.                 $role->add_cap( $company_capability );
  78.             }
  79.         }
  80.     }
  81.  
  82.     unset( $role );
  83.  
  84.     /**
  85.      * Editors: Let them manage users, but not Administrators
  86.      * @author  Isabel Castillo
  87.      * @link http://isabelcastillo.com/editor-role-manage-users-wordpress
  88.      * ...
  89.      */
  90.     if ( get_option( 'pre_editor_can_manage_users' ) != 'true' ) {
  91.         $edit_editor = get_role('editor'); // Get the user role
  92.  
  93.             $edit_editor->add_cap('edit_users');
  94.             $edit_editor->add_cap('list_users');
  95.             $edit_editor->add_cap('promote_users');
  96.             $edit_editor->add_cap('create_users');
  97.             $edit_editor->add_cap('add_users');
  98.             $edit_editor->add_cap('delete_users');
  99.  
  100.         //Just to stop duplicate occurances
  101.         update_option( 'pre_editor_can_manage_users', 'true' );
  102.     }
  103.  
  104.     //For debugging purpose only
  105.     //remove_role( 'company' );
  106. }
  107. add_action( 'after_switch_theme', 'pre_manage_custom_user_roles' );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement