J'essaie de récupérer un message basé sur les clés méta suivantes.
post_code
avec 432C
location
avec XYZ
Les deux appartiennent à un CPT. J'essaie d'aller chercher le message avec ces deux méta-valeurs.Je ne veux pas d'une relation OR, je veux une relation AND, j'ai essayé plusieurs objets WP_Query
et je n'ai toujours pas trouvé de solution après des heures de recherche.
SOLUTION
La solution acceptée ci-dessous a fonctionné, cependant, je voulais savoir comment cela fonctionnait.
Voilà comment ça marche
SELECT * FROM wp_posts p, wp_postmeta m1, wp_postmeta m2
WHERE p.ID = m1.post_id and p.ID = m2.post_id
AND m1.meta_key = 'key1' AND m1.meta_value = 'value1'
AND m2.meta_key = 'key2' AND m2.meta_value = 'value2'
AND p.post_type = 'cpt' AND p.post_status = 'published'
Cela devrait le faire. La relation par défaut est AND, il ne sera donc pas nécessaire de le spécifier.
$args = array(
'post_type' => 'wpse_cpt',
'meta_query' => array(
array(
'key' => 'post_code',
'value' => '432C',
),
array(
'key' => 'location',
'value' => 'XYZ',
),
),
);
$query = new WP_Query( $args );
Essayé ci-dessous les paramètres de l'objet
array(
'key' => 'post_code',
'value' =>'432C',
'compare' => '='
),
array(
'relation' =>'AND',
array(
'key' => 'location',
'value' => 'XYZ',
'compare' => '=',
),
)
$args = array(
'post_type' => 'wpse_cpt',
'meta_query' => array(
'relation' => 'AND' //**** Use AND or OR as per your required Where Clause
array(
'key' => 'post_code',
'value' => '432C',
),
array(
'key' => 'location',
'value' => 'XYZ',
),
),
);
$query = new WP_Query( $args );