I have a form that essentially filters a query for courses. The form has multiple options but lets take 2 of those, whether the course is open and its location. The query fully programmed looks like this:
$query = array(
'post_type' => 'courses',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'course_location',
'compare' => '=',
'value' => 'Birmingham',
),
array(
'key' => 'course_open',
'compare' => '=',
'value' => 1,
),
),
);
Now when I use the form this is the code I have...
Basic Start of query
$query = array(
'post_type' => 'courses',
);
Adding in location from form:
if(isset($_GET['location']) && $_GET['location'] != '') {
$query['meta_query'] = array(
'relation' => 'AND',
array(
'key' => 'course_location',
'compare' => '=',
'value' => $_GET['location'],
),
);
}
Adding in if the course is open:
if(isset($_GET['open']) && $_GET['open'] != '') {
$query['meta_query'] = array(
'relation' => 'AND',
array(
'key' => 'course_open',
'compare' => '=',
'value' => $_GET['open'],
),
);
}
The problem I have is the course open will replace the course locations in the query. If I just set one of the options it works perfectly I just need to keep adding to the query if its set in the form. Any idea how I would do this?