$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.