Wie füge ich einen Beziehungsparameter zu meiner Filterabfrage hinzu?

Ich baue einen AJAX-Nachfilter mit einem einzigen Formular mit drei Auswahlfeldern, die es dem Benutzer erlauben, nach drei verschiedenen Taxonomien ( category , region und country ) zu sortieren. Alles funktioniert gut für jedes Auswahlfeld, wenn es alleine verwendet wird, aber wenn ich Optionen in zwei oder drei Feldern auswähle, möchte ich sicherstellen, dass das tax_query einen zusätzlichen relation auf AND so dass die Post-Ergebnisse alle Bedingungen erfüllen in jedem Feld einstellen. Hier beginne ich von:

 $args = array( 'orderby' => 'date', 'order' => $_POST['date'], ); // Regions if ( isset( $_POST['region_filter'] ) ) { $args['tax_query'] = array( array( 'taxonomy' => 'region', 'field' => 'id', 'terms' => $_POST['region_filter'] ) ); } // Countries if ( isset( $_POST['country_filter'] ) ) { $args['tax_query'] = array( array( 'taxonomy' => 'country', 'field' => 'id', 'terms' => $_POST['country_filter'] ) ); } // Categories if ( isset( $_POST['category_filter'] ) ) { $args['tax_query'] = array( array( 'taxonomy' => 'category', 'field' => 'id', 'terms' => $_POST['category_filter'] ) ); } if ( isset( $_POST['region_filter'] ) && isset( $_POST['country_filter'] ) || isset( $_POST['region_filter'] ) && isset( $_POST['category_filter'] ) || isset( $_POST['country_filter'] ) && isset( $_POST['category_filter'] ) || isset( $_POST['region_filter'] ) && isset( $_POST['country_filter'] ) && isset( $_POST['category_filter'] ) ) { // All conditions must be true to return posts $args['tax_query'] = array( 'relation'=>'AND' ); } $filter_query = new WP_Query( $args ); 

Wo fehlt mir hier das Zeichen? Und eine Nebenfrage, die Methode, die ich verwende, um meine Anfrage zu erstellen, scheint sehr repetitiv zu sein, und ich bin mir sicher, dass es eine bessere, mehr DRY-Methode geben muss, die ich verwenden kann, um dies ein wenig zu reduzieren. Vorschläge sind mehr als willkommen.

Solutions Collecting From Web of "Wie füge ich einen Beziehungsparameter zu meiner Filterabfrage hinzu?"