Reputation:
hello friends this is my args for WP_Query.
$args = array('post_type' => 'job_listing');
$args['meta_query']=array(
'relation' => 'OR',
array(
'key' => 'app_trailer-type',
'value' => $job_tailor,
'compare' => 'LIKE'
),
array(
'key' => 'app_pay-type',
'value' => $app_pay_type,
'compare' => 'LIKE'
),
array(
'key' => 'geo_address',
'value' => $geo_address,
'compare' => 'LIKE'
),
array(
'key' => 'geo_country',
'value' => $geo_country,
'compare' => 'LIKE'
),
array(
'key' => 'geo_short_address',
'value' => $geo_short_address,
'compare' => 'LIKE'
),
);
this is return query like.
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id)
INNER JOIN wp_postmeta AS mt2 ON (wp_posts.ID = mt2.post_id)
INNER JOIN wp_postmeta AS mt3 ON (wp_posts.ID = mt3.post_id)
INNER JOIN wp_postmeta AS mt4 ON (wp_posts.ID = mt4.post_id) WHERE 1=1 AND wp_posts.post_type = 'job_listing' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'expired' OR wp_posts.post_status = 'tr_pending' OR wp_posts.post_status = 'tr_failed' OR wp_posts.post_status = 'tr_completed' OR wp_posts.post_status = 'tr_activated' OR wp_posts.post_status = 'private') AND ( (wp_postmeta.meta_key = 'app_trailer-type' AND CAST(wp_postmeta.meta_value AS CHAR) LIKE '%Flatbed%')
AND (mt1.meta_key = 'app_pay-type' AND CAST(mt1.meta_value AS CHAR) LIKE '%Per Week%')
AND (mt2.meta_key = 'geo_address' AND CAST(mt2.meta_value AS CHAR) LIKE '%Davenport%')
AND (mt3.meta_key = 'geo_country' AND CAST(mt3.meta_value AS CHAR) LIKE '%United States%')
AND (mt4.meta_key = 'geo_short_address' AND CAST(mt4.meta_value AS CHAR) LIKE '%Davenport%') ) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10
i required query that query like.
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id)
INNER JOIN wp_postmeta AS mt2 ON (wp_posts.ID = mt2.post_id)
INNER JOIN wp_postmeta AS mt3 ON (wp_posts.ID = mt3.post_id)
INNER JOIN wp_postmeta AS mt4 ON (wp_posts.ID = mt4.post_id) WHERE 1=1 AND wp_posts.post_type = 'job_listing' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'expired' OR wp_posts.post_status = 'tr_pending' OR wp_posts.post_status = 'tr_failed' OR wp_posts.post_status = 'tr_completed' OR wp_posts.post_status = 'tr_activated' OR wp_posts.post_status = 'private') AND ( (wp_postmeta.meta_key = 'app_trailer-type' OR CAST(wp_postmeta.meta_value AS CHAR) LIKE '%Flatbed%')
OR (mt1.meta_key = 'app_pay-type' AND CAST(mt1.meta_value AS CHAR) LIKE '%Per Week%')
OR (mt2.meta_key = 'geo_address' AND CAST(mt2.meta_value AS CHAR) LIKE '%Davenport%')
OR (mt3.meta_key = 'geo_country' AND CAST(mt3.meta_value AS CHAR) LIKE '%United States%')
OR (mt4.meta_key = 'geo_short_address' AND CAST(mt4.meta_value AS CHAR) LIKE '%Davenport%') ) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10
please help.
Upvotes: 3
Views: 16836
Reputation: 15603
For the OR Query argument array should be like this:
$args = array(
'post_type' => 'post',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'app_trailer-type',
'value' => $job_tailor,
'compare' => 'LIKE'
),
array(
'key' => 'app_pay-type',
'value' => $app_pay_type,
'compare' => 'LIKE'
),
array(
'key' => 'geo_address',
'value' => $geo_address,
'compare' => 'LIKE'
),
array(
'key' => 'geo_country',
'value' => $geo_country,
'compare' => 'LIKE'
),
array(
'key' => 'geo_short_address',
'value' => $geo_short_address,
'compare' => 'LIKE'
),
)
);
Reference: http://codex.wordpress.org/Class_Reference/WP_Query
Upvotes: 7
Reputation: 5824
changed args with like.
$args = array('post_type' => 'job_listing', 'relation' => 'OR');
$args['meta_query']=array(
array(
'key' => 'app_trailer-type',
'value' => $job_tailor,
'compare' => 'LIKE'
),
array(
'key' => 'app_pay-type',
'value' => $app_pay_type,
'compare' => 'LIKE'
),
array(
'key' => 'geo_address',
'value' => $geo_address,
'compare' => 'LIKE'
),
array(
'key' => 'geo_country',
'value' => $geo_country,
'compare' => 'LIKE'
),
array(
'key' => 'geo_short_address',
'value' => $geo_short_address,
'compare' => 'LIKE'
),
);
Upvotes: 4
Reputation: 146201
You may try something like this
$args = array(
'post_type' => 'job_listing',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'app_trailer-type',
'value' => $job_tailor,
'compare' => 'LIKE'
),
array(
'key' => 'app_pay-type',
'value' => $app_pay_type,
'compare' => 'LIKE'
),
// ....
)
);
Upvotes: 2
Reputation: 5382
From the WP_Query Class Reference (link):
Important Note: tax_query takes an array of tax query arguments arrays (it takes an array of arrays) - you can see this in the second example below. This construct allows you to query multiple taxonomies by using the relation parameter in the first (outer) array to describe the boolean relationship between the taxonomy queries.
You should add an array('relation' => 'OR')
to the beginning of your meta_query array.
Upvotes: 0