Pastor , : – Ramez ‘s Ghabbour
3 / 3 / 2020
Download
// Handle AJAX request for syncing users in batches function mus_sync_users_batch() { if (!current_user_can('manage_network_users')) { wp_send_json_error(['message' => 'Insufficient permissions.']); } $offset = isset($_POST['offset']) ? intval($_POST['offset']) : 0; $batch_size = 50; $users = get_users(['number' => $batch_size, 'offset' => $offset, 'fields' => 'all_with_meta']); if (empty($users)) { wp_send_json_success(['processed' => 0, 'remaining' => 0, 'done' => true]); } $sites = get_sites(['fields' => 'ids']); $super_admins = get_super_admins(); // Get Super Admins list foreach ($users as $user) { $user_id = $user->ID; $username = $user->user_login; $user_roles = get_user_meta($user_id, 'wp_capabilities', true); // Get all roles // Debug: Log user capabilities to see if they exist error_log("Syncing user: $username, Capabilities: " . print_r($user_roles, true)); // Skip Super Admins if (in_array($username, $super_admins)) { continue; } foreach ($sites as $site_id) { switch_to_blog($site_id); $site_user = get_userdata($user_id); if ($site_user) { $site_roles = $site_user->roles; if (in_array('administrator', $site_roles)) { restore_current_blog(); continue; } } // Sync all capabilities without overriding existing ones foreach ($user_roles as $role => $enabled) { $user->add_role($role); } restore_current_blog(); } } $total_users = count_users()['total_users']; $remaining = $total_users - ($offset + $batch_size); $done = $remaining <= 0; wp_send_json_success(['processed' => count($users), 'remaining' => max($remaining, 0), 'done' => $done]); }