Пример #1
0
 function drop_instructor_capabilities($user_id)
 {
     if (user_can($user_id, 'manage_options')) {
         return;
     }
     $role = new Instructor($user_id);
     $global_option = !is_multisite();
     delete_user_option($user_id, 'role_ins', $global_option);
     // Legacy
     delete_user_meta($user_id, 'role_ins', 'instructor');
     $role->remove_cap('can_edit_posts');
     $role->remove_cap('read');
     $role->remove_cap('upload_files');
     $capabilities = array_keys(CoursePress_Capabilities::$capabilities['instructor']);
     foreach ($capabilities as $cap) {
         $role->remove_cap($cap);
     }
     CoursePress_Capabilities::grant_private_caps($user_id);
 }
<?php

global $wp_roles;
if (isset($_POST['submit']) && current_user_can('manage_options') && isset($_POST['instructor_capability'])) {
    /* Set capabilities for each instructor user */
    $wp_user_search = new Instructor_Search();
    // $wp_user_search = new Instructor_Search( $usersearch, $page_num );
    foreach ($wp_user_search->get_results() as $user) {
        CoursePress_Capabilities::grant_private_caps($user->ID);
        // Don't remove capabilities from administrators
        /* if( user_can( $user->ID, 'manage_options' ) ){
        	  continue;
        	  } */
        $role = new WP_User($user->ID);
        $user_capabilities = $role->wp_capabilities;
        // More than the hidden field needs to be present to add roles.
        if (isset($_POST['instructor_capability']) && 1 < count($_POST['instructor_capability'])) {
            foreach ($user_capabilities as $key => $old_cap) {
                // Make sure to only remove CoursePress instructor capabilities
                if (!in_array($key, $_POST['instructor_capability']) && in_array($key, array_keys(CoursePress_Capabilities::$capabilities['instructor']))) {
                    //making the operation less expensive
                    if (!user_can($user->ID, 'manage_options')) {
                        $role->remove_cap($key);
                    }
                }
            }
            foreach ($_POST['instructor_capability'] as $new_cap) {
                $role->add_cap($new_cap);
            }
        } else {
            //all unchecked, remove all instructor capabilities