diff --git a/src/wp-includes/class-wp-query.php b/src/wp-includes/class-wp-query.php
index 953f917d27..e8b653357d 100644
--- a/src/wp-includes/class-wp-query.php
+++ b/src/wp-includes/class-wp-query.php
@@ -1096,7 +1096,7 @@ class WP_Query {
 				continue;   // Handled further down in the $q['tag'] block
 			}

-			if ( $t->query_var && ! empty( $q[ $t->query_var ] ) ) {
+			if ( $t->query_var && isset( $q[ $t->query_var ] ) && '' != $q[ $t->query_var ] ) {
 				$tax_query_defaults = array(
 					'taxonomy' => $taxonomy,
 					'field'    => 'slug',
diff --git a/src/wp-includes/class-wp-tax-query.php b/src/wp-includes/class-wp-tax-query.php
index 03e904c670..4f6ccfb564 100644
--- a/src/wp-includes/class-wp-tax-query.php
+++ b/src/wp-includes/class-wp-tax-query.php
@@ -601,7 +601,7 @@ class WP_Tax_Query {
 		$resulting_field = sanitize_key( $resulting_field );

 		// Empty 'terms' always results in a null transformation.
-		$terms = array_filter( $query['terms'] );
+		$terms = array_filter( $query['terms'], function( $term ) { return ( 0 !== strlen( trim( $term ) ) ); } );
 		if ( empty( $terms ) ) {
 			$query['terms'] = array();
 			$query['field'] = $resulting_field;
