Hinzufügen eines Arrays aus einer Abfragezeichenfolge zu einer WP-Metaabfrage

Ich sammle Werte aus einer Abfragezeichenfolge als Array. Dann sammle ich diese Werte und lege sie in den Wert der ‘Meta-Abfrage’.

Ich habe Probleme, wenn von WP_Query nichts ausgegeben wird. Ich habe das Gefühl, dass etwas mit dem zweiten Array in der “Meta-Abfrage” nicht stimmt.

Ich habe versucht, den Vergleich zu “LIKE” zu ändern, und das zeigt den gesamten Inhalt anstelle von was in der Abfrage ist. Ich habe auch versucht, die Beziehung zu entfernen ODER hat keine Auswirkungen auf das Ergebnis.

Wenn ich die Variable ausdrucke, erhalte ich das richtige Array, das ich möchte.

Abfragezeichenfolge:

?variable[]=value1&variable[]=value2 

PHP-Code:

  'my_custom_post_type', 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'my_post_field', 'value' => $variable_selected, 'compare' => 'IN' ) ) ); $posts = new WP_Query( $filter ); 

Jede Hilfe dabei wird großartig sein.

Solutions Collecting From Web of "Hinzufügen eines Arrays aus einer Abfragezeichenfolge zu einer WP-Metaabfrage"

Diese $_GET['variable'] ist ein Array, entsprechend Ihrer URL- ?variable[]=value1&variable[]=value2 , $_GET['variable'][0] und $_GET['variable'][1] sollte diese 2 Schlüsselwerte zurückgeben

Edit – nach der Diskussion – macht es dynamisch

 $meta_query = array(); if ( ! empty( $_GET["variable"] ) ) { if ( is_array( $_GET["variable"] ) ) { $meta_query['relation'] = 'OR'; foreach ( $_GET["variable"] as $value ) { $meta_query[] = array( 'key' => 'my_post_field', 'value' => sanitize_text_field( (string) $value ), 'compare' => '=' ); } } else { $meta_query = array( 'key' => 'my_post_field', 'value' => sanitize_text_field( (string) $_GET["variable"] ), 'compare' => '=' ); } } $filter = array( 'post_type' => 'my_custom_post_type', 'meta_query' => array( 'relation' => 'OR', $meta_query ) ); $posts = new WP_Query( $filter ); 

Ich habe den Operator in = geändert, weil ich es getestet habe und es bei meiner lokalen Installation funktioniert hat.

meta_compare (string) – Operator zum Testen des ‘meta_value’. Mögliche Werte sind ‘=’, ‘! =’, ‘>’, ‘> =’, ‘< ', '<=', 'WIE', 'NICHT WIE', 'IN', 'NICHT IN', 'ZWISCHEN' ',' NICHT ZWISCHEN ',' NICHT VORHANDEN ',' REGEXP ',' NICHT REGEXP 'oder' RLIKE '. Standardwert ist '='. - Codex