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 ) ) {
|
if ( $parsed_args['include_selected'] && ( $parsed_args['selected'] > 0 ) ) {
|
||||||
$found_selected = false;
|
$found_selected = false;
|
||||||
$parsed_args['selected'] = (int) $parsed_args['selected'];
|
$parsed_args['selected'] = (int) $parsed_args['selected'];
|
||||||
|
|
||||||
foreach ( (array) $users as $user ) {
|
foreach ( (array) $users as $user ) {
|
||||||
$user->ID = (int) $user->ID;
|
$user->ID = (int) $user->ID;
|
||||||
if ( $user->ID === $parsed_args['selected'] ) {
|
if ( $user->ID === $parsed_args['selected'] ) {
|
||||||
@ -1199,7 +1200,10 @@ function wp_dropdown_users( $args = '' ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( ! $found_selected ) {
|
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 );
|
$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
|
* @ticket 38135
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user