I am having this code in filter backend.Three filters are there. Each are working separate good. but when i run all filter same time its returning "OR" result. I need to make all three filters "AND"
add_filter( 'parse_query', 'wpse45436_posts_filter' );
function wpse45436_posts_filter( $query ){
global $pagenow;
$type = 'lessons';
if (isset($_GET['post_type'])) {
$type = $_GET['post_type'];
}
if ( 'lessons' == $type && is_admin() && $pagenow=='edit.php' && isset($_GET['age_band']) && $_GET['age_band'] != '') {
// die("here");
$query->query_vars['meta_key'] = 'dt_age_group';
$query->query_vars['meta_value'] = $_GET['age_band'];
}
}
add_filter( 'parse_query', 'wpse45437_posts_filter' );
function wpse45437_posts_filter( $query ){
global $pagenow;
$type = 'lessons';
if (isset($_GET['post_type'])) {
$type = $_GET['post_type'];
}
if ( 'lessons' == $type && is_admin() && $pagenow=='edit.php' && isset($_GET['module_no']) && $_GET['module_no'] != '') {
$ar = array("A"=>"4-5","B"=>"6-7","C"=>"8-9","D"=>"10-11","E"=>"12-13","F"=>"14-15");
$ar = array_flip($ar);
$chr = array("A","B","C","D","E","F");
$mod_no = $_GET['module_no'];
if ( 'lessons' == $type && is_admin() && $pagenow=='edit.php' && isset($_GET['age_band']) && $_GET['age_band'] != '') {
// die("here");
$mod_no = $mod_no.$ar[$_GET['age_band']];
}
$query->query_vars['meta_key'] = 'dt_module_no';
$query->query_vars['meta_value'] = $mod_no;
$query->query_vars['meta_compare'] = 'LIKE';
}
}
add_filter( 'parse_query', 'wpse45438_posts_filter' );
function wpse45438_posts_filter( $query ){
global $pagenow;
$type = 'lessons';
if (isset($_GET['post_type'])) {
$type = $_GET['post_type'];
}
if ( 'lessons' == $type && is_admin() && $pagenow=='edit.php' && isset($_GET['lesson_no']) && $_GET['lesson_no'] != '') {
// die("here");
$query->query_vars['meta_key'] = 'dt_lesson_no';
$query->query_vars['meta_value'] = $_GET['lesson_no'];
$query->query_vars['meta_relation'] = 'AND';
}
}