$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();
In the lines above, the WP_Query is called with query vars as in URI. Currently, the result is good because the request will be now transformed in an array of params (and taxonomy).
TIPS: But it is possible to give a better description with arrays passed as below (remember ‘language’ is a taxonomy since 6 years):
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();
For more accurate query, it will be easier to introduce others parameters (taxonomy, custom fields (meta), sorting…)..
Reference in codex.