$faq_args = array( 'post_type' => 'hrf_faq', 'post_status' => 'publish', 'posts_per_page' => -1, 'orderby' => 'menu_order', 'order' => 'ASC', 'lang' => xili_curlang() ); if( $faq_params['category'] != '' ){ $faq_args['category_name'] = $faq_params['category']; } $faq_query = new WP_Query( $faq_args ); if( $faq_query->have_posts() ): while( $faq_query->have_posts() ): $faq_query->the_post();
Dans les lignes ci-dessous, WP_Query est appelé avec les variables (query_vars) utilisées dans l’URL. Normalement le résultat est bon, car de toute façon, la requête sera traduite dans des matrices de paramètres (taxinomie)
TRUCS: Mais il est plus précis de formuler la requête directement en matrice (array) (rappeler vous que ‘language’ est une taxonomie depuis 6 ans dans xili-language):
if ( $faq_params['lang'] ) { $lang_slug = ( $faq_params['lang'] == 'cur') ? xili_curlang() : $faq_params['lang'] ; $query = array( 'numberposts' => -1, 'post_type' => 'hrf_faq', 'tax_query' => array( 'relation' => 'AND', array( 'field' => 'slug', 'taxonomy' => 'language', 'terms' => $lang_slug, ), ), ); if ($faq_params['category'] != '') { $query['tax_query'][] = array( 'field' => 'slug', 'taxonomy' => 'category', 'terms' => explode (',', $faq_params['category']) ); } } else { $query = array( 'numberposts' => -1, 'post_type' => 'hrf_faq' ); if ($faq_params['category'] != '') { $query['tax_query'] = array( array( 'field' => 'slug', 'taxonomy' => 'category', 'terms' => explode (',', $faq_params['category']) )); } } $faqs = new WP_Query( $query ) ; if ($faqs) { while ( $faqs->have_posts() ) : $faqs->the_post(); $ID = get_the_ID();
Pour des requêtes encore plus précises, il sera plus aisé d’ajouter d’autres paramètres (taxonomy, custom fields (meta), sorting…)..
Référence dans le codex.