Opened 12 years ago
Last modified 4 years ago
#23635 new enhancement
get_objects_in_term - identify matching terms
Reported by: | leepowers | Owned by: | |
---|---|---|---|
Milestone: | Priority: | normal | |
Severity: | normal | Version: | 3.5.1 |
Component: | Taxonomy | Keywords: | has-patch has-unit-tests |
Focuses: | Cc: |
Description
get_objects_in_term
is great for viewing taxonomy relationships for non-posts. However the return value is too limited for certain use cases. For When fetching object_ids for multiple terms the return value doesn't inform as to the matching term.
For instance this query:
$object_ids = get_objects_in_term(array(55, 66, 77, 88, 99), "my_custom_taxonomy");
Might return an array of object_ids as follows:
array(101, 202, 303, 404);
However there's no way to tell which term a particular object_id matched. Did object 101 match term 77? Or maybe it was term 99? Or both?
I've created a modified version of get_objects_in_term
which will addresses this issue. I'll submit a patch, but am wondering if there's another way to achieve this functionality.
Change History (4)
#1
@
10 years ago
- Keywords needs-unit-tests added
- Milestone changed from Awaiting Review to Future Release
This ticket was mentioned in PR #1185 on WordPress/wordpress-develop by donmhico.
4 years ago
#3
- Keywords has-patch has-unit-tests added; needs-patch needs-unit-tests removed
This PR will add $args['format']
which if set to true
will format the output of get_objects_in_term()
.
Trac ticket: https://core.trac.wordpress.org/ticket/23635
#4
@
4 years ago
Thank you for this ticket @leepowers. I know it's been many years now but I attached a PR that does what you suggested.
Example Usage
<?php // Default $objects = get_objects_in_term( array( 4, 3 ), 'my_taxonomy' ); var_dump( $objects ); /* * Output array(5) { [0]=> string(2) "21" [1]=> string(2) "26" [2]=> string(2) "26" [3]=> string(2) "28" [4]=> string(2) "42" } */ $format_objects = get_objects_in_term( array( 4, 3 ), 'my_taxonomy', array( 'format' => true ) ); var_dump( $format_objects ); /* * Output array(2) { [3]=> array(3) { [0]=> string(2) "21" [1]=> string(2) "26" [2]=> string(2) "28" } [4]=> array(2) { [0]=> string(2) "26" [1]=> string(2) "42" } } */
Only by looping over each of your terms and calling
get_objects_in_term( $term_id )
for each.I can imagine supporting something like
$args['format']
that lets you specify that you'd like the results returned as an array: