Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I'm working with a client's WordPress site that has user submissions (via TDO Mini Forms) from multiple countries, and they would like to be able to search for posts by region – Europe, Africa, Central America, etc.

There is a custom field already in place for the user's country of origin. I also have a separate table that maps countries to regions. What I want to do is make it so that the user can select Europe, for example, from a map, and have WP return any posts from countries that are mapped as EU.

What's the best way to accomplish this? Not only do I not want to reinvent the wheel, but WP can be very fussy about it search functions.

My first thought was to perform a search of the Regions table, return all of the countries as an array, and then use that array to perform a WP search, but I'm not finding how to do that without creating an AND search, which returns nothing.

Thanks for any help.

ty

share|improve this question

1 Answer 1

up vote 1 down vote accepted

You've got the right idea. If you get an array of country IDs within a region, you can pass that array to a meta query IN comparison:

$country_ids = array(1,2,3); // this would be the result from fetching countries associated with a region.
$args = array(
    'posts_per_page' => -1,
    'meta_query' => array(
        array(
            'key' => 'country',
            'value' => $country_ids,
            'compare' => 'IN'
        )
    )
);
$query = new WP_Query( $args );

EDIT- this is assuming the ID is stored, if you're storing the country names as the value, you should query with an array of the names.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.