In wp_get_object_terms()
, before returning terms (and before running them through the 'wp_get_object_terms' filter) - run them through $terms = array_values( array_unique( $terms, SORT_REGULAR ) )
.
There will be "dupes" when the function is called with `'fields' => 'all_with_object_id'`, but the objects will actually be unique due to the `object_id` addition, so they shouldn't be filtered out. Adds unit tests. All other unit tests pass. Fixes #11003. git-svn-id: https://develop.svn.wordpress.org/trunk@28583 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
7f2cad1809
commit
4dd4a32cde
@ -2337,9 +2337,11 @@ function wp_get_object_terms($object_ids, $taxonomies, $args = array()) {
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! $terms )
|
||||
if ( ! $terms ) {
|
||||
$terms = array();
|
||||
|
||||
} else {
|
||||
$terms = array_values( array_unique( $terms, SORT_REGULAR ) );
|
||||
}
|
||||
/**
|
||||
* Filter the terms for a given object or objects.
|
||||
*
|
||||
|
@ -570,4 +570,24 @@ class Tests_Term extends WP_UnitTestCase {
|
||||
// this previously returned 2
|
||||
$this->assertEquals( 0, $count );
|
||||
}
|
||||
|
||||
function test_wp_get_object_terms_no_dupes() {
|
||||
$post_id1 = $this->factory->post->create();
|
||||
$post_id2 = $this->factory->post->create();
|
||||
$cat_id = $this->factory->category->create();
|
||||
$cat_id2 = $this->factory->category->create();
|
||||
wp_set_post_categories( $post_id1, array( $cat_id, $cat_id2 ) );
|
||||
wp_set_post_categories( $post_id2, $cat_id );
|
||||
|
||||
$terms = wp_get_object_terms( array( $post_id1, $post_id2 ), 'category' );
|
||||
$this->assertCount( 2, $terms );
|
||||
$this->assertEquals( array( $cat_id, $cat_id2 ), wp_list_pluck( $terms, 'term_id' ) );
|
||||
|
||||
$terms2 = wp_get_object_terms( array( $post_id1, $post_id2 ), 'category', array(
|
||||
'fields' => 'all_with_object_id'
|
||||
) );
|
||||
|
||||
$this->assertCount( 3, $terms2 );
|
||||
$this->assertEquals( array( $cat_id, $cat_id, $cat_id2 ), wp_list_pluck( $terms2, 'term_id' ) );
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user