I’m trying to build a WP_Query with specific filters, i.e., checkboxes and radio buttons.
The checkboxes will filter the meta-data linked with my custom post type. The meta-data is the location. And the search engine should show results from one or more chosen country.
Here is my code for the form:
function aid_showform_func() {
$form = '<form role="search" id="searchform" method="get" action="' . home_url( '/' ) . '" >
<input type="hidden" name="page_id" value="' . intval($_GET['page_id']) . '" />
<input type="hidden" name="post_type" value="aid-providers">
<br>
<input type="text" class="darpe-search-text" name="aid-providers-query" placeholder="Search Aid Providers">
<br>
<br>
<label>Category:</label><br>
<input type="radio" name="aid-providers-category[]" value="International Donor Agencies" " . echo checked; . " > International Donor Agencies<br>
<input type="radio" name="aid-providers-category[]" value="International Foundations"> International Foundations<br>
<input type="radio" name="aid-providers-category[]" value="Corporate Funders"> Corporate Funders<br>
<input type="radio" name="aid-providers-category[]" value="Arab Foundations"> Arab Foundations<br>
<br>
<br>
<div class="aid-providers-locations-plus">
<label>Location:</label><p class="aid-providers-locations-plus-button">+</p>
</div>
<p class="aid-providers-locations-collapse">
<input type="checkbox" value="Tunisia" name="aid-providers-location[]"> Tunisia<br>
<input type="checkbox" value="Algeria" name="aid-providers-location[]"> Algeria<br>
<input type="checkbox" value="Morocco" name="aid-providers-location[]"> Morocco<br>
<input type="checkbox" value="Sudan" name="aid-providers-location[]"> Sudan<br>
<input type="checkbox" value="Mauritania" name="aid-providers-location[]"> Mauritania<br>
<input type="checkbox" value="Palestine" name="aid-providers-location[]"> Palestine<br>
<input type="checkbox" value="Jordan" name="aid-providers-location[]"> Jordan<br>
<input type="checkbox" value="Lebanon" name="aid-providers-location[]"> Lebanon<br>
<input type="checkbox" value="Syria" name="aid-providers-location[]"> Syria<br>
<input type="checkbox" value="Iraq" name="aid-providers-location[]"> Iraq<br>
<input type="checkbox" value="Yemen" name="aid-providers-location[]"> Yemen<br>
<input type="checkbox" value="KSA" name="aid-providers-location[]"> KSA<br>
<input type="checkbox" value="United Arab Emirates" name="aid-providers-location[]"> United Arab Emirates<br>
<input type="checkbox" value="Kuwait" name="aid-providers-location[]"> Kuwait<br>
<input type="checkbox" value="Oman" name="aid-providers-location[]"> Oman<br>
<input type="checkbox" value="Bahrain" name="aid-providers-location[]"> Bahrain<br>
<input type="checkbox" value="Qatar" name="aid-providers-location[]"> Qatar<br></p>
<br>
<input type="submit" alt="Search" value="Search">
<input type="button" value="Clear" class="clear-button">
<br>
<br>
</form>';
In functions.php, I’ve set the query_vars:
function add_query_vars_filter( $vars ){
$vars[] = "aid-providers-query";
$vars[] = "aid-providers-category";
$vars[] = "aid-providers-location";
return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );
And that’s how the meta-data gets saved upon CPT creation:
if(isset($_POST["aid-providers-country"]))
{
$chosen_aid_country = $_POST['aid-providers-country'];
$old_meta = get_post_meta($aid_entry_id, '_aid-providers-country', true);
// Update post meta
if(!empty($old_meta)){
update_post_meta($aid_entry_id, '_aid-providers-country', $chosen_aid_country);
} else {
add_post_meta($aid_entry_id, '_aid-providers-country', $chosen_aid_country, true);
}
}
Thanks for the concern (if any!).