web-dev-qa-db-fra.com

Recevez des messages avec plusieurs méta-clés et de la valeur

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.

5
Sheraz Ahmed

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'
0
Sheraz Ahmed

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 );
10
Jeremy Ross

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' => '=',

          ),
        )
0
Manthan Dave
$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 );
0
Chiranjib Khanra