Users: Check if the user ID passed as selected
to wp_dropdown_users()
corresponds to an existing user.
This avoids a few PHP notices if the `include_selected` parameter was specified and a non-existing user ID was passed. Props campusboy1987. Fixes #51370. git-svn-id: https://develop.svn.wordpress.org/trunk@49036 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
83eb948b7f
commit
7d15225ad0
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user