1

I have a custom WP query that is returning every post, instead of just the ones being specified by the query. I can't seem to find anything wrong with the code, so I must be missing something:

//Process incoming variable
if(!empty($_REQUEST['region'])){
     $region = $_REQUEST['region'];
 } else {
     $region = NULL;
 }
if (empty($region)) {
    echo "No region selected";

//Search Region table to retrieve array of country names
}else{
    $regionresult = mysql_query("SELECT * FROM gallery_regions WHERE region='$region'") or die(mysql_error());
    $num_rows = mysql_num_rows($regionresult);
    if (!$regionresult) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    $message .= 'Whole query: ' . $query;
    die($message);
}

// Process search reults and format array contents for WP Query
$country_search_array = array();
while($row = mysql_fetch_array($regionresult)){
    $country_search_array[] = $row['country']; 
}
$country_search = "'".implode("','", $country_search_array)."'";

//Build WP query    
$args = array(
    'posts_per_page' => '-1',
    'cat' => '4',
    'meta_query' => array(
        array(
        'meta_key' => 'Country-2',
        'meta_value' => $country_search,
        'compare' => '='
        )
    )
);
$country_query = new WP_Query( $args );

//Some output for troubleshooting purposes
$num = $country_query->post_count;
print_r ($country_search); echo "<br><br>";
print_r ($num);echo " Posts Returned.<br><br>";

// The Loop
while ( $country_query->have_posts() ) : $country_query->the_post();
    the_title(); echo"<br>";
endwhile;

// Reset Everything
wp_reset_postdata();
wp_reset_query();
mysql_free_result($regionresult);

If this looks familiar, it's because I've posted other questions related to this project, so I apologize if it seems repetitious. This is the last hurdle, though.

As always, any help is appreciated.

Thanks!

ty

UPDATE - Here is the actual query, as it is generated by print_r:

WP_Query Object
(
    [query_vars] => Array
        (
            [posts_per_page] => -1
            [cat] => 4
            [meta_query] => Array
                (
                    [0] => Array
                        (
                            [meta_key] => Country
                            [meta_value] => 'Algeria','Angola','Benin','Botswana','Burkina Faso','Burundi','Cape Verde','Central African Republic','Chad','Comoros','Congo','Ivory Coast','Djibouti','Egypt','Eritrea','Ethiopia','Gabon','Gambia','Ghana','Kenya','Lesotho','Liberia','Libya','Madagascar','Malawi','Mauritania','Mauritius','Morocco','Mozambique','Nambia','Niger','Nigeria','Reunion','Rwanda','Sao Tome & Principe','Senegal','Seychelles','Sierra Leone','Somalia','South Africa','Sudan','Swaziland','Tanzania','Togo','Tunisia','Uganda','Zaire','Zambia','Zimbabwe'
                            [compare] => IN
                        )

                )

            [error] => 
            [m] => 0
            [p] => 0
            [post_parent] => 
            [subpost] => 
            [subpost_id] => 
            [attachment] => 
            [attachment_id] => 0
            [name] => 
            [static] => 
            [pagename] => 
            [page_id] => 0
            [second] => 
            [minute] => 
            [hour] => 
            [day] => 0
            [monthnum] => 0
            [year] => 0
            [w] => 0
            [category_name] => gallery
            [tag] => 
            [tag_id] => 
            [author_name] => 
            [feed] => 
            [tb] => 
            [paged] => 0
            [comments_popup] => 
            [meta_key] => 
            [meta_value] => 
            [preview] => 
            [s] => 
            [sentence] => 
            [fields] => 
            [category__in] => Array
                (
                    [0] => 4
                )

            [category__not_in] => Array
                (
                )

            [category__and] => Array
                (
                )

            [post__in] => Array
                (
                )

            [post__not_in] => Array
                (
                )

            [tag__in] => Array
                (
                )

            [tag__not_in] => Array
                (
                )

            [tag__and] => Array
                (
                )

            [tag_slug__in] => Array
                (
                )

            [tag_slug__and] => Array
                (
                )

            [ignore_sticky_posts] => 
            [suppress_filters] => 
            [cache_results] => 1
            [update_post_term_cache] => 1
            [update_post_meta_cache] => 1
            [post_type] => 
            [nopaging] => 1
            [comments_per_page] => 50
            [no_found_rows] => 
            [order] => DESC
        )

    [tax_query] => WP_Tax_Query Object
        (
            [queries] => Array
                (
                    [0] => Array
                        (
                            [taxonomy] => category
                            [terms] => Array
                                (
                                    [0] => 4
                                )

                            [include_children] => 
                            [field] => term_id
                            [operator] => IN
                        )

                )

            [relation] => AND
        )

    [meta_query] => WP_Meta_Query Object
        (
            [queries] => Array
                (
                    [0] => Array
                        (
                            [meta_key] => Country
                            [meta_value] => 'Algeria','Angola','Benin','Botswana','Burkina Faso','Burundi','Cape Verde','Central African Republic','Chad','Comoros','Congo','Ivory Coast','Djibouti','Egypt','Eritrea','Ethiopia','Gabon','Gambia','Ghana','Kenya','Lesotho','Liberia','Libya','Madagascar','Malawi','Mauritania','Mauritius','Morocco','Mozambique','Nambia','Niger','Nigeria','Reunion','Rwanda','Sao Tome & Principe','Senegal','Seychelles','Sierra Leone','Somalia','South Africa','Sudan','Swaziland','Tanzania','Togo','Tunisia','Uganda','Zaire','Zambia','Zimbabwe'
                            [compare] => IN
                        )

                )

            [relation] => AND
        )

    [post_count] => 1047
    [current_post] => -1
    [in_the_loop] => 
    [comment_count] => 0
    [current_comment] => -1
    [found_posts] => 0
    [max_num_pages] => 0
    [max_num_comment_pages] => 0
    [is_single] => 
    [is_preview] => 
    [is_page] => 
    [is_archive] => 1
    [is_date] => 
    [is_year] => 
    [is_month] => 
    [is_day] => 
    [is_time] => 
    [is_author] => 
    [is_category] => 1
    [is_tag] => 
    [is_tax] => 
    [is_search] => 
    [is_feed] => 
    [is_comment_feed] => 
    [is_trackback] => 
    [is_home] => 
    [is_404] => 
    [is_comments_popup] => 
    [is_paged] => 
    [is_admin] => 
    [is_attachment] => 
    [is_singular] => 
    [is_robots] => 
    [is_posts_page] => 
    [is_post_type_archive] => 
    [query_vars_hash] => 859f71690a2d92bf36791d7332bf2dbc
    [query_vars_changed] => 
    [thumbnails_cached] => 
    [query] => Array
        (
            [posts_per_page] => -1
            [cat] => 4
            [meta_query] => Array
                (
                    [0] => Array
                        (
                            [meta_key] => Country
                            [meta_value] => 'Algeria','Angola','Benin','Botswana','Burkina Faso','Burundi','Cape Verde','Central African Republic','Chad','Comoros','Congo','Ivory Coast','Djibouti','Egypt','Eritrea','Ethiopia','Gabon','Gambia','Ghana','Kenya','Lesotho','Liberia','Libya','Madagascar','Malawi','Mauritania','Mauritius','Morocco','Mozambique','Nambia','Niger','Nigeria','Reunion','Rwanda','Sao Tome & Principe','Senegal','Seychelles','Sierra Leone','Somalia','South Africa','Sudan','Swaziland','Tanzania','Togo','Tunisia','Uganda','Zaire','Zambia','Zimbabwe'
                            [compare] => IN
                        )

                )

        )

    [request] =>  SELECT   alere_posts.* FROM alere_posts  INNER JOIN alere_term_relationships ON (alere_posts.ID = alere_term_relationships.object_id) WHERE 1=1  AND ( alere_term_relationships.term_taxonomy_id IN (4) ) AND alere_posts.post_type = 'post' AND (alere_posts.post_status = 'publish' OR alere_posts.post_status = 'private') GROUP BY alere_posts.ID ORDER BY alere_posts.post_date DESC 

[posts] => Array (…
1
  • 1
    The meta_key in your query is Country-2 and the meta_key in the actual query output shown is Country - would this have anything to do with it?
    – Adam
    Commented Jun 25, 2012 at 15:46

2 Answers 2

1

I think you're confusing old meta parameters with new meta_query parameters. meta_key should be just key and meta_value should be just value. Refer to WP_Query in Codex for correct syntax.

Also, print_r( $country_query ); will show you the actual SQL query being sent to the database and will show you where you're going wrong.

2
  • If I remove the meta, I get no results. I've updated my post to show the actual query.
    – Ty Morton
    Commented Jun 25, 2012 at 15:21
  • @TyMorton Did you do as Milo suggests and change meta_key/meta_value to key/value within the meta_query array? As you didn't specify, rather you're speaking of "removing the meta" which doesn't make sense or am I misinterpreting?
    – Adam
    Commented Jun 25, 2012 at 15:33
1

Thanks for all of the help!

It tured out to be a combination of issues:

  1. Instead of imploding the $country_search_array, it needs to be added as is to the query.
  2. Since it's an array, we can't use the '=' for the compare value. It needs to be 'IN'

I couldn't have figured it out without the assistance I received here. Again, thanks!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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