WordPress WP_Query clause where avec OU?
bonjour les amis c'est mon args pour 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'
),
);
c'est le retour de la requête comme.
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
je requête requête.
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
s'il vous plaît aider.
OriginalL'auteur | 2013-10-28
Vous devez vous connecter pour publier un commentaire.
changé args.
OriginalL'auteur Renish Khunt
De la Requête OU de l'argument tableau devrait ressembler à ceci:
Référence: http://codex.wordpress.org/Class_Reference/WP_Query
ce que vous devez obtenir.
j'ai changé ma clause where comme la requête en cours à venir avec ET,ET,ET je veux obtenir,ou, OU,OU, comme mais j'ai mis en relation OU, mais c'est de retour avec ET.
OriginalL'auteur Code Lღver
Vous pouvez essayer quelque chose comme cela
Lire plus sur le Codex.
OriginalL'auteur The Alpha
De la WP_Query Classe de Référence (lien):
Vous devriez ajouter un
array('relation' => 'OR')
au début de votre meta_query tableau.OriginalL'auteur Aeveus