Introduce wp_get_object_terms_args filter.

This filter allows developers to modify the arguments passed to
`wp_get_object_terms()` before the query is run.

Props enrico.sorcinelli.
Fixes #35925.

git-svn-id: https://develop.svn.wordpress.org/trunk@40994 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Boone Gorges
2017-07-02 18:28:21 +00:00
parent 3a4ffa09ab
commit a16d16449d
2 changed files with 40 additions and 0 deletions
@@ -732,4 +732,32 @@ class Tests_Term_WpGetObjectTerms extends WP_UnitTestCase {
$this->assertEquals( array( $t1, $t3, $t2 ), $found );
}
/**
* @ticket 35925
*/
public function test_wp_get_object_terms_args_filter() {
$taxonomy = 'wptests_tax_4';
register_taxonomy( $taxonomy, 'post', array( 'sort' => 'true' ) );
$post_id = self::factory()->post->create();
$terms = array( 'foo', 'bar', 'baz' );
$set = wp_set_object_terms( $post_id, $terms, $taxonomy );
// Filter for maintaining term order
add_filter( 'wp_get_object_terms_args', array( $this, 'filter_wp_get_object_terms_args' ), 10, 3 );
// Test directly
$get_object_terms = wp_get_object_terms( $post_id, $taxonomy, array( 'fields' => 'names' ) );
$this->assertEquals( $terms, $get_object_terms );
// Test metabox taxonomy (admin advanced edit)
$terms_to_edit = get_terms_to_edit( $post_id, $taxonomy );
$this->assertEquals( implode( ',', $terms ), $terms_to_edit );
}
function filter_wp_get_object_terms_args ( $args, $object_ids, $taxonomies ) {
$args['orderby'] = 'term_order';
return $args;
}
}