[wp-trac] [WordPress Trac] #51905: Issue with 'is_object_in_term' when terms assigned in increseing order
WordPress Trac
noreply at wordpress.org
Tue Dec 1 13:50:58 UTC 2020
#51905: Issue with 'is_object_in_term' when terms assigned in increseing order
--------------------------+-----------------------------
Reporter: hmishra080 | Owner: (none)
Type: defect (bug) | Status: assigned
Priority: normal | Milestone: Awaiting Review
Component: Taxonomy | Version:
Severity: major | Keywords:
Focuses: |
--------------------------+-----------------------------
Hello Team,
Today I have encountered one issue in the 'is_object_in_term' function.
Scenario:
I have two terms 'A' and 'B', which have Ids 1 and 2. The logic on my page
to show those posts which have term 'A'. I was checking that with the
below code.
has_term($term_object, 'taxonomy-name')
But the above code making condition true for term B posts also and to
overcome this I have to forcefully change the code with the below one.
has_term($term_id, 'taxonomy-name')
When I looked into it more then I found that $term_object contains 2
integer values in the array i.e. term_id and term_taxonomy_id. For term
'A' the term_id is 1 and term_taxonomy_id is 2 and for term 'B' (2 & 3).
So when code flow to 'is_object_in_term' function from 'has_term' and
reach the following line of code:
$terms = (array) $terms;
$ints = array_filter( $terms, 'is_int' );
if ( $ints ) {
$strs = array_diff( $terms, $ints );
} else {
$strs =& $terms;
}
So, for term A the value of $ints is array(1, 2) and for term B array(2,
3).
Now when term 'B' set on a post and we check 'has_term' for the term 'A'
with 'term_object', the 'has_term' function returns true because of the
below code.
// If term is an int, check against term_ids only.
if ( $ints && in_array( $object_term->term_id, $ints, true ) ) {
return true;
}
As term 'B' has id 2 and value of $ints for term 'B' is array(2, 3) so,
condition true for the term 'B' also.
Please see the attachment for code reference. I hope this makes sense and
I am able to point out the issue.
Thanks
Harshad
http://prntscr.com/vtmb35
http://prntscr.com/vtmbo6
--
Ticket URL: <https://core.trac.wordpress.org/ticket/51905>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list