[wp-trac] [WordPress Trac] #33369: Cannot intelligently target using the `get_terms_args` filter
WordPress Trac
noreply at wordpress.org
Thu Aug 13 23:53:30 UTC 2015
#33369: Cannot intelligently target using the `get_terms_args` filter
-----------------------------+-----------------------------
Reporter: johnjamesjacoby | Owner:
Type: feature request | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Taxonomy | Version: 2.2
Severity: normal | Keywords:
Focuses: |
-----------------------------+-----------------------------
I'm filtering `get_terms_args` in the `get_terms()` function, but because
I cannot see what the original `$args` parameter was that was passed into
`get_terms()`, I cannot make an educated decision about whether or not my
plugin should override any default arguments.
Example code:
{{{
add_filter( 'get_terms_args', function( $args, $taxonomies ) {
if ( 'id' !== $args['orderby'] ) {
$args['orderby'] = 'id';
}
return $args;
} ), 10, 2 );
}}}
The above snippet will always force `get_terms()` to order by `id` which
actually isn't what I want to do. I want to only order by `id` if the
`orderby` passed into `get_terms()` was not `id`.
This happens because of the following code in `get_terms()`
{{{
$args = wp_parse_args( $args, $defaults );
}}}
Not an unusual line (over 80 other occurrences in core) but it's not ideal
because it overwrites the original `$args` parameter, and filters cannot
compare the two variables to make more intelligent decisions.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/33369>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list