Taxonomy: Ensure consistency of hide_empty
in term queries when taxonomy
is excluded.
When querying for terms in hierarchical categories using hide_empty=true
,
results have historically included parent terms which are themselves
unattached to any objects (are "empty") but which have non-empty descendent
terms. Because this process involves walking the descendant tree, we avoid it
when we detect that the queried taxonomies are not hierarchical. (This
behavior was introduced in [5525].)
When the taxonomy
parameter of get_terms()
was made optional - see #35495,
[36614] - it affected the mechanism for avoiding unneccessary tree walks,
since there may not be any explicitly declared taxonomies to run through
is_taxonomy_hierarchical()
. As a result, term queries excluding taxonomy
did not check descendants, and empty parents with non-empty children were not
included in hide_empty
results.
We correct the behavior by crawling term descendants when the taxonomy
argument is absent, which means that we're querying for terms in all taxonomies.
Props smerriman.
Fixes #37728.