function getCapsToRemove() { global $wp_roles, $wpdb; // build full capabilities list from all roles except Administrator $fullCapsList = array(); foreach ($wp_roles->roles as $role) { // validate if capabilities is an array if (isset($role['capabilities']) && is_array($role['capabilities'])) { foreach ($role['capabilities'] as $capability => $value) { if (!isset($fullCapsList[$capability])) { $fullCapsList[$capability] = 1; } } } } $capsToExclude = getBuiltInWPCaps(); $capsToRemove = array(); foreach ($fullCapsList as $capability => $value) { if (!isset($capsToExclude[$capability])) { // check roles $capInUse = false; foreach ($wp_roles->role_objects as $wp_role) { if ($wp_role->name != 'administrator') { if ($wp_role->has_cap($capability)) { $capInUse = true; break; } } } if (!$capInUse) { $capsToRemove[$capability] = 1; } } } return $capsToRemove; }
function getCapsToRemove() { global $wp_roles, $wpdb; $fullCapsList = array(); foreach ($wp_roles->roles as $role) { foreach ($role['capabilities'] as $key => $value) { $fullCapsList[] = $key; } } $fullCapsList = ure_ArrayUnique($fullCapsList); sort($fullCapsList); $capsToExclude = getBuiltInWPCaps(); $capsToRemove = array(); foreach ($fullCapsList as $capability) { if (!isset($capsToExclude[$capability])) { // check roles $capInUse = false; foreach ($wp_roles->role_objects as $wp_role) { if ($wp_role->name != 'administrator') { if ($wp_role->has_cap($capability)) { $capInUse = true; break; } } } if (!$capInUse) { // check users $usersId = $wpdb->get_col($wpdb->prepare("SELECT {$wpdb->users}.ID FROM {$wpdb->users}")); foreach ($usersId as $user_id) { $user = get_user_to_edit($user_id); if (isset($user->roles[0]) && $user->roles[0] == 'administrator') { continue; } if ($user->has_cap($capability)) { $capInUse = true; break; } } } if (!$capInUse) { $capsToRemove[] = $capability; } } } return $capsToRemove; }