wp_query zeigt alle Werte an

Ich habe ein Suchformular mit 3 Feldern: city porperty type und rooms alle Felder sind ausgewählte Typ-Eingaben.

Wenn ich Werte für jedes der Felder auswähle, bekomme ich das korrekte Ergebnis.

beispielsweise:

city= Los Angeles property type = apartment room = 3 

aber wenn Sie nur Stadt und Grundstückstyp wählen und keinen Wert für Zimmer wählen (sagen wir, dass der leere Wert all ). Ich bekomme kein Ergebnis. Ich würde erwarten, alle Wohnungen in LA zu bekommen

das ist meine wp-frage, die ich bis jetzt bekommen habe.

 if (isset($_GET['front-side-prop-search'])){ $args = array( 'posts_per_page' => 9, 'post_type' => 'property', 'meta_query' => array( 'relation ' => 'AND', array( 'key' => 'prop_city', 'value' => $city, 'compare' => '=', 'meta_query' => array( 'relation ' => 'OR', array( 'key' => 'prop_city', 'value' => 'All', 'compare' => 'NOT LIKE', ), ), ), array( 'key' => 'prop_type', 'value' => $type, 'compare' => '=' ), array( 'key' => 'prop_rooms', 'value' => $rooms, 'compare' => '=' ), ), ); }; 

Ich bin sicher, dass meine wp_query falsch ist, bitte hilf mir oder weise mich auf einen Artikel hin, der mir helfen könnte, dieses Problem zu lösen.

**

Update – Was ich letztendlich getan habe:

**

Ich überprüfte jede Variable als Tony vorgeschlagen, dann änderte ich das compare bei jeder Abfrage abhängig vom Ergebnis der Variablen.

Wenn Sie wissen, dass compare => '=' gibt alle Werte zurück, die dem Wert entsprechen. compare => '!=' gibt alles zurück, was nicht dem Wert entspricht.

Das ist der Code, den ich irgendwann benutzt habe:

 $city = $_GET['field_59ae96d970a06']; //prop_city $type = $_GET['field_59ec7533be002']; //prop_type $rooms = $_GET['field_59ae9e2370a0b']; //check for each var if returns empty value or not if($city == ""){ $city_val = "!="; }else{ $city_val = "="; }; if($type == "all types"){ $type_val = "!="; }else{ $type_val = "="; }; if($rooms == "all rooms"){ $rooms_val = "!="; }else{ $rooms_val = "="; }; //the query: if (isset($_GET['front-side-prop-search'])){ $args = array( 'posts_per_page' => 9, 'post_type' => 'property', 'meta_query' => array( 'relation ' => 'AND', array( 'key' => 'prop_city', 'value' => $city, 'compare' => $city_val, ), array( 'key' => 'prop_type', 'value' => $type, 'compare' => $type_val, ), array( 'key' => 'prop_rooms', 'value' => $rooms, 'compare' => $rooms_val, ), ), ); }; 

Solutions Collecting From Web of "wp_query zeigt alle Werte an"

Im folgenden Beispiel wird nur geändert, welche args auf Ihren 3 Eingabefeldern basieren. Dies macht es überflüssig, nach diesen Werten zu suchen (und “alle” als value ). Ich bin mir sicher, dass eine Kombination von logischen Operatoren für compare und relation den Job erledigen würde, aber das funktioniert auch.

 if (isset($_GET['front-side-prop-search'])){ // test whether $city has a selected value, if so then args below: // $city and $type selected $args = array( 'posts_per_page' => 9, 'post_type' => 'property', 'meta_query' => array( 'relation ' => 'AND', array( 'key' => 'prop_city', 'value' => $city, 'compare' => '=', 'meta_query' => array( 'relation ' => 'OR', array( 'key' => 'prop_city', 'value' => 'All', 'compare' => 'NOT LIKE', ), ), ), array( 'key' => 'prop_type', 'value' => $type, 'compare' => '=' ) ), ); // $city and $rooms $args = array( 'posts_per_page' => 9, 'post_type' => 'property', 'meta_query' => array( 'relation ' => 'AND', array( 'key' => 'prop_city', 'value' => $city, 'compare' => '=', 'meta_query' => array( 'relation ' => 'OR', array( 'key' => 'prop_city', 'value' => 'All', 'compare' => 'NOT LIKE', ), ), ), array( 'key' => 'prop_rooms', 'value' => $rooms, 'compare' => '=' ), ), ); // etc };