@@ -166,7 +166,7 @@ public function remove( $args, $_ ) {
166166 }
167167
168168 $ users = $ this ->fetcher ->get_many ( $ args );
169- $ user_logins = $ users ? array_values ( array_unique ( wp_list_pluck ( $ users , 'user_login ' ) ) ) : array () ;
169+ $ user_logins = $ users ? array_values ( array_unique ( wp_list_pluck ( $ users , 'user_login ' ) ) ) : [] ;
170170 $ user_logins_count = count ( $ user_logins );
171171
172172 $ user_ids = [];
@@ -185,7 +185,7 @@ public function remove( $args, $_ ) {
185185 array_unique (
186186 array_filter (
187187 $ args ,
188- function ( $ v ) use ( $ flipped_user_logins ) {
188+ static function ( $ v ) use ( $ flipped_user_logins ) {
189189 // Exclude numeric and email-like logins (login names can be email-like but ignore this given the circumstances).
190190 return ! isset ( $ flipped_user_logins [ $ v ] ) && ! is_numeric ( $ v ) && ! is_email ( $ v );
191191 }
@@ -198,6 +198,14 @@ function ( $v ) use ( $flipped_user_logins ) {
198198 WP_CLI ::error ( 'No valid user logins given to revoke super-admin privileges from. ' );
199199 }
200200
201+ // Ensure we always have an ID for all logins.
202+ foreach ( $ user_logins as $ user_login ) {
203+ if ( ! array_key_exists ( $ user_login , $ user_ids ) ) {
204+ $ user = get_user_by ( 'login ' , $ user_login );
205+ $ user_ids [ $ user_login ] = $ user ->ID ;
206+ }
207+ }
208+
201209 $ update_super_admins = array_diff ( $ super_admins , $ user_logins );
202210 if ( $ update_super_admins === $ super_admins ) {
203211 WP_CLI ::error ( $ user_logins_count > 1 ? 'None of the given users is a super admin. ' : 'The given user is not a super admin. ' );
0 commit comments