Fix SQL generation when meta_query has an 'relation' => 'OR' for its queries and wants to 'orderby' => 'meta_value'.

Adds unit test.

Props jackreichert.
Fixes #25538.



git-svn-id: https://develop.svn.wordpress.org/trunk@28659 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Scott Taylor
2014-06-04 05:47:19 +00:00
parent 24b3ed214e
commit 1ffe74ad6f
2 changed files with 53 additions and 3 deletions

View File

@@ -197,4 +197,43 @@ class Tests_Meta extends WP_UnitTestCase {
wp_cache_delete( $post_id, 'post_meta' );
}
}
function test_query_meta_query_order() {
$post1 = $this->factory->post->create( array( 'post_title' => 'meta-value-1', 'post_date' => '2007-01-01 00:00:00' ) );
$post2 = $this->factory->post->create( array( 'post_title' => 'meta-value-2', 'post_date' => '2007-01-01 00:00:00' ) );
$post3 = $this->factory->post->create( array( 'post_title' => 'meta-value-3', 'post_date' => '2007-01-01 00:00:00' ) );
add_post_meta( $post1, 'order', 1 );
add_post_meta( $post2, 'order', 2 );
add_post_meta( $post3, 'order', 3 );
$args = array(
'post_type' => 'post',
'meta_key' => 'order',
'meta_value' => 1,
'meta_compare' => '>=',
'orderby' => 'meta_value'
);
$args2 = array(
'post_type' => 'post',
'meta_key' => 'order',
'meta_value' => 1,
'meta_compare' => '>=',
'orderby' => 'meta_value',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'order',
'compare' => '>=',
'value' => 1
)
)
);
$posts = get_posts( $args );
$posts2 = get_posts( $args2 );
$this->assertEquals( wp_list_pluck( $posts, 'post_title' ), wp_list_pluck( $posts2, 'post_title' ) );
}
}