get_objects_in_term(): include term children when querying by slug. See #12891

git-svn-id: https://develop.svn.wordpress.org/trunk@15654 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
scribu 2010-09-24 14:08:07 +00:00
parent 861c929165
commit d4eecd8787
1 changed files with 16 additions and 7 deletions

View File

@ -471,19 +471,28 @@ function get_objects_in_term( $terms, $taxonomies, $args = array() ) {
if ( !in_array( $operator, array( 'IN', 'NOT IN' ) ) )
$operator = 'IN';
if ( is_taxonomy_hierarchical( $taxonomy ) && $include_children ) {
$children = array();
foreach ( $terms as $term ) {
if ( 'term_id' != $field ) {
if ( $term = get_term_by( $field, $term, $taxonomy ) )
$term = $term->term_id;
else
continue;
}
$children = array_merge( $children, get_term_children( $term, $taxonomy ) );
$children[] = $term;
}
$terms = $children;
$field = 'term_id';
}
$taxonomies = "'" . implode( "', '", $taxonomies ) . "'";
switch ( $field ) {
case 'term_id':
$terms = array_map( 'intval', $terms );
if ( is_taxonomy_hierarchical( $taxonomy ) && $include_children ) {
$children = $terms;
foreach ( $terms as $term )
$children = array_merge( $children, get_term_children( $term, $taxonomy ) );
$terms = $children;
}
$terms = implode( ',', $terms );
$sql = "
SELECT object_id