diff --git a/src/wp-includes/user.php b/src/wp-includes/user.php index 6a2bf20ca9..284b3d71b2 100644 --- a/src/wp-includes/user.php +++ b/src/wp-includes/user.php @@ -1191,6 +1191,7 @@ function wp_dropdown_users( $args = '' ) { if ( $parsed_args['include_selected'] && ( $parsed_args['selected'] > 0 ) ) { $found_selected = false; $parsed_args['selected'] = (int) $parsed_args['selected']; + foreach ( (array) $users as $user ) { $user->ID = (int) $user->ID; if ( $user->ID === $parsed_args['selected'] ) { @@ -1199,7 +1200,10 @@ function wp_dropdown_users( $args = '' ) { } if ( ! $found_selected ) { - $users[] = get_userdata( $parsed_args['selected'] ); + $selected_user = get_userdata( $parsed_args['selected'] ); + if ( $selected_user ) { + $users[] = $selected_user; + } } } diff --git a/tests/phpunit/tests/user/wpDropdownUsers.php b/tests/phpunit/tests/user/wpDropdownUsers.php index 4f6b89db77..91c35cf63a 100644 --- a/tests/phpunit/tests/user/wpDropdownUsers.php +++ b/tests/phpunit/tests/user/wpDropdownUsers.php @@ -129,6 +129,22 @@ class Tests_User_WpDropdownUsers extends WP_UnitTestCase { $this->assertContains( $user1->user_login, $found ); } + /** + * @ticket 51370 + */ + public function test_include_selected_with_non_existing_user_id() { + $found = wp_dropdown_users( + array( + 'echo' => false, + 'selected' => PHP_INT_MAX, + 'include_selected' => true, + 'show' => 'user_login', + ) + ); + + $this->assertNotContains( (string) PHP_INT_MAX, $found ); + } + /** * @ticket 38135 */