wp-Abfrage mit dynamischen Taxonomien und Begriffen?

Ich brauche wp_query mit mehr als einer Taxonomie und Begriffen, die dynamisch sind. Mehrere Begriffe für jeweils eine Taxonomie. Wie Wenn eine Taxonomie Farbe ist , hat sie die Begriffe blau, grün, rot. Zweite Taxonomie ist Größe und Begriffe 7,8,9. Diese Taxonomie ist Preis und ihre Begriffe sind 500 $, 600 $ und so weiter.

Ich muss die Ergebnisse basierend auf Checkboxen filtern, wie es auf jeder E-Commerce-Website passiert. Sagen wir erst, ich wähle blaue Farbe und dann Produkte, die zu blau gehören. Wenn ich grün auswähle, dann sind Produkte diejenigen, die sowohl blau als auch grün gehören Wenn ich 7 wähle, dann ist das Produkt dasjenige, das zu blau gehört, grün mit der Größe 7 .

Ich hoffe, Sie bekommen, was ich brauche.Ich sah auf Codex für mehrere Taxonomie, aber es hat nur 2 Taxonomien, die statische sind, aber in meinem Fall ist es dynamisch und kann mehr als 5 sein.

Im Codex ist es der Code ..

$args = array( 'post_type' => 'post', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'movie_genre', 'field' => 'slug', 'terms' => array( 'action', 'comedy' ) ), array( 'taxonomy' => 'actor', 'field' => 'id', 'terms' => array( 103, 115, 206 ), 'operator' => 'NOT IN' ) ) ); $query = new WP_Query( $args );$args = array( 'post_type' => 'post', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'movie_genre', 'field' => 'slug', 'terms' => array( 'action', 'comedy' ) ), array( 'taxonomy' => 'actor', 'field' => 'id', 'terms' => array( 103, 115, 206 ), 'operator' => 'NOT IN' ) ) ); $query = new WP_Query( $args ); 

aber was ist, wenn ich mehr als 2 habe, zB 5 (dynamisch).

Bitte gib mir irgendeine Lösung.

Ich schreibe auch query inead von Wp-Query, aber nicht funktioniert, es fügt Ergebnis von blau, grün mit Größe 7 statt zu filtern.

Hier ist eine Abfrage.

 $taxonomy_name = "'" . implode("','", $taxonomy_name_ar) . "'"; $term_name = "'" . implode("','", $term_name_ar) . "'"; $querystr = " SELECT * FROM $wpdb->posts LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id) LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) LEFT JOIN $wpdb->terms ON($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id) WHERE $wpdb->posts.post_type = 'product' AND $wpdb->posts.post_status = 'publish' AND $wpdb->term_taxonomy.taxonomy in (".$taxonomy_name.") AND $wpdb->terms.slug in (".$term_name.") ORDER BY $wpdb->posts.post_date DESC LIMIT 10 "; echo $querystr; $pageposts = $wpdb->get_results($querystr, OBJECT); 

Hinweis $ tanomy_name hat die Anzahl von Taxonomien wie Farbe, Größe, Preis und Terme mit einer Anzahl von Begriffen wie 7,8, blau, grün

UPDATE: NACH ANTWORT

 $tax_query = array( 'relation' => 'AND' ); foreach($taxonomy_array as $taxonomy_array_value){ $term_value_array = array(); foreach($term_array[$taxonomy_array_value] as $term_value){ array_push($term_value_array,$term_value); } $term_name = "'" . implode("','", $term_value_array) . "'"; $tax_query[] = array( 'taxonomy' => $taxonomy_array_value, 'field' => 'slug', 'terms' => array($term_name) ); } $args = array( 'post_type' => 'product', 'tax_query' => $tax_query ); 

Solutions Collecting From Web of "wp-Abfrage mit dynamischen Taxonomien und Begriffen?"

Hier ist eine Idee für eine dynamische Abfrage mit mehreren Taxonomien:

 // construct the tax-query: $tax_query = array( 'relation' => 'AND' ); // check if movie_genre taxonomy is to be included if( $bMovieGenre ){ $tax_query[] = array( 'taxonomy' => 'movie_genre', 'field' => 'slug', 'terms' => array( 'action', 'comedy' ) ); } // check if actor taxonomy is to be included if( $bActor ){ $tax_query[] = array( 'taxonomy' => 'actor', 'field' => 'id', 'terms' => array( 103, 115, 206 ), 'operator' => 'NOT IN' ); } $args = array( 'post_type' => 'post', 'tax_query' => $tax_query, ); $query = new WP_Query( $args ); 

Dabei werden $bActor und $bMovieGenre aus der Benutzereingabe konstruiert.

Im Allgemeinen, wenn Ihr Benutzereingabefeld wie folgt aussieht:

 $selected = array( array( 'taxonomy' => 'movie_genre' , 'terms' => array( 'action' , 'comedy') , 'field' => 'slug' , 'operator' => 'IN' , ), array( 'taxonomy' => 'actor' , 'terms' => array( 103, 115, 206 ) , 'field' => 'slug' , 'operator' => 'NOT IN' , ), ); 

Dann können Sie dies versuchen, um die dynamische Taxonomieabfrage zu erstellen:

 $tax_query = array( 'relation' => 'AND' ); foreach( $selected as $sel ){ $tax_query[] = array( 'taxonomy' => $sel['taxonomy'] , 'terms' => $sel['terms'] , 'field' => $sel['field'] , 'operator' => $sel['operator'] , ); } 

oder nur

 $tax_query = array( 'relation' => 'AND' ); foreach( $selected as $sel ){ $tax_query[] = $sel; }