Quantcast
Channel: Question and Answer » meta-query
Viewing all articles
Browse latest Browse all 36

WP_Query filtered by simple checkboxes

$
0
0

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!).


Viewing all articles
Browse latest Browse all 36

Trending Articles