diff --git a/wp-includes/functions.php b/wp-includes/functions.php index c2d7253ce..e0da6b69a 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -3033,7 +3033,7 @@ function wp_filter_object_list( $list, $args = array(), $operator = 'and', $fiel $filtered = array(); foreach ( $list as $key => $obj ) { - $matched = count(array_intersect_assoc(get_object_vars($obj), $args)); + $matched = count( array_intersect_assoc( (array) ($obj), $args ) ); if ( ('and' == $operator && $matched == $count) || ('or' == $operator && $matched <= $count) ) { if ( $field ) $filtered[] = $obj->$field; diff --git a/wp-includes/query.php b/wp-includes/query.php index d232589d4..ced07e742 100644 --- a/wp-includes/query.php +++ b/wp-includes/query.php @@ -1948,6 +1948,21 @@ class WP_Query { $where .= " AND $wpdb->posts.ID IN(" . implode( ', ', $ids ) . ")"; else $where .= ' AND 0 = 1'; + + // Back-compat + if ( !empty( $ids ) ) { + $cat_query = wp_filter_object_list( $tax_query, array( 'taxonomy' => 'category' ) ); + if ( !empty( $cat_query ) ) { + $cat_query = reset( $cat_query ); + $cat = get_term_by( $cat_query['field'], $cat_query['terms'][0], 'category' ); + if ( $cat ) { + $this->set('cat', $cat->term_id); + $this->set('category_name', $cat->slug); + } + } + } + + unset( $ids ); } if ( !empty($q['meta_key']) ) {