When using WP_Query's 'fields' => 'ids'
(or 'fields' => 'id=>parent'
), make sure the returned result is always an array of integers.
fixes #31194. see #27252. git-svn-id: https://develop.svn.wordpress.org/trunk@31324 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
f05f380638
commit
5e9b89bf59
@ -3421,10 +3421,11 @@ class WP_Query {
|
||||
|
||||
if ( 'ids' == $q['fields'] ) {
|
||||
$this->posts = $wpdb->get_col( $this->request );
|
||||
$this->posts = array_map( 'intval', $this->posts );
|
||||
$this->post_count = count( $this->posts );
|
||||
$this->set_found_posts( $q, $limits );
|
||||
|
||||
return array_map( 'intval', $this->posts );
|
||||
return $this->posts;
|
||||
}
|
||||
|
||||
if ( 'id=>parent' == $q['fields'] ) {
|
||||
@ -3433,9 +3434,13 @@ class WP_Query {
|
||||
$this->set_found_posts( $q, $limits );
|
||||
|
||||
$r = array();
|
||||
foreach ( $this->posts as $post ) {
|
||||
foreach ( $this->posts as $key => $post ) {
|
||||
$this->posts[ $key ]->ID = (int) $post->ID;
|
||||
$this->posts[ $key ]->post_parent = (int) $post->post_parent;
|
||||
|
||||
$r[ (int) $post->ID ] = (int) $post->post_parent;
|
||||
}
|
||||
|
||||
return $r;
|
||||
}
|
||||
|
||||
|
@ -387,6 +387,7 @@ class Tests_Query_Results extends WP_UnitTestCase {
|
||||
|
||||
/**
|
||||
* @ticket 27252
|
||||
* @ticket 31194
|
||||
*/
|
||||
function test_query_fields_integers() {
|
||||
|
||||
@ -401,6 +402,7 @@ class Tests_Query_Results extends WP_UnitTestCase {
|
||||
) );
|
||||
|
||||
$this->assertSame( $parents, $posts1 );
|
||||
$this->assertSame( $parents, $this->q->posts );
|
||||
|
||||
$children = array(
|
||||
(int) self::$child_one => (int) self::$parent_one,
|
||||
@ -415,6 +417,11 @@ class Tests_Query_Results extends WP_UnitTestCase {
|
||||
|
||||
$this->assertSame( $children, $posts2 );
|
||||
|
||||
foreach ( $this->q->posts as $post ) {
|
||||
$this->assertInternalType( 'int', $post->ID );
|
||||
$this->assertInternalType( 'int', $post->post_parent );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user