Ich habe eine einfache Form, die aus zwei Mehrfachselektionen besteht, die (wie durch Zauberei) mein Postarchiv mit URL-Parametern filtert:
Wenn ich ‘Irland’ und ‘Partner’ auswähle, werde ich an folgende Adresse geschickt:
https://example.com/network/?country=ireland&_type=partner
Wenn ich dann mehrere Werte wie “Irland”, “Vereinigtes Königreich” und “Partner” auswähle, werde ich an folgende Adresse gesendet:
https://example.com/network/?country=ireland&country=united-kingdom&_type=partner
Meine Frage ist, wie kann ich dieses Formular verwenden, um eine bedingte ‘ODER’ Anfrage mehr wie https://example.com/network/?country=ireland,united-kingdom&type=partner zu erstellen?
Vielleicht können Sie dem HTML ein verstecktes Feld hinzufügen, das die 'relation' => 'OR'
passiert.
Was bedeutet:
tax_query[relation]=OR&tax_query[][country]=united-kingdom&tax_query[][type]=director
Array ( [tax_query] => Array ( [relation] => OR [0] => Array ( [country] => united-kingdom ) [1] => Array ( [type] => director ) ) )
Scheint, dass deine network
benutzerdefiniert ist und würde dies mit $_REQUEST
.
http_build_query()
wie mehrere Taxonomieabfragen und eine Modellierung auf der Basis von http_build_query()
, um 'relation' => 'OR'
hinzuzufügen.
$args = http_build_query( array ( 'post_type' => 'post', 'tax_query' => array ( 'relation' => 'OR', array ( 'taxonomy' => 'movie_genre', 'field' => 'slug', 'terms' => array ( 'action', 'comedy' ), ), array ( 'taxonomy' => 'actor', 'field' => 'term_id', 'terms' => array ( 103, 115, 206 ), 'operator' => 'NOT IN', ), ), ) ); echo "
"; echo PHP_EOL . $args . PHP_EOL; print_r( wp_parse_args( $args ) );Am Ende sieht es so aus:
post_type=post&tax_query%5Brelation%5D=AND&tax_query%5B0%5D%5Btaxonomy%5D=movie_genre&tax_query%5B0%5D%5Bfield%5D=slug&tax_query%5B0%5D%5Bterms%5D%5B0%5D=action&tax_query%5B0%5D%5Bterms%5D%5B1%5D=comedy&tax_query%5B1%5D%5Btaxonomy%5D=actor&tax_query%5B1%5D%5Bfield%5D=term_id&tax_query%5B1%5D%5Bterms%5D%5B0%5D=103&tax_query%5B1%5D%5Bterms%5D%5B1%5D=115&tax_query%5B1%5D%5Bterms%5D%5B2%5D=206&tax_query%5B1%5D%5Boperator%5D=NOT+IN
Und kann von
wp_parse_args()
analysiert werden.