Comment rechercher plusieurs valeurs de méta clé avec la même clé
$querystr = "
SELECT $wpdb->posts.*
FROM $wpdb->posts, $wpdb->postmeta
WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id
AND $wpdb->postmeta.meta_key = 'key1'
AND $wpdb->postmeta.meta_value = 'value1'
// why doesn't this work?
AND $wpdb->postmeta.meta_value = 'value2'
AND $wpdb->posts.post_status = 'publish'
AND $wpdb->posts.post_type = 'post'
ORDER BY $wpdb->posts.post_date DESC
";
code suivant
<?php
$args = array(
'meta_query' => array(
array(
'key' => 'key1',
'value' => 'value1',
'compare' => '='
),
// this array results in no return for both arrays
array(
'key' => 'key1',
'value' => 'value2',
'compare' => '='
)
)
);
$the_query = new WP_Query( $args );
?>
<?php /* Start the Loop */ ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>
J'ai eu le même problème lorsque le passage de plusieurs tableaux pour la même clé ne fonctionnait pas. À la place, utilisez simplement un tableau, définissez «valeur» sur un tableau de valeurs et définissez «comparer» sur IN:
la source
Vous devez alias la table postmeta pour la deuxième valeur:
Vous pouvez également le faire maintenant depuis la 3.1 avec un
meta_query
:la source
print_r( $the_query );
immédiatement après la requête?La clé est la clé1 et les valeurs «valeur1» et «valeur2» l'ont essayé à la fois en texte et en numérique dans une nouvelle installation avec vingt-onze. print_r ($ the_query); la sortie des travaux semble normale. Également essayé key1 et key2 ne fonctionne pas non plus. Cela fonctionne dès que je le limite à un seul tableau. Vérifié avec différents navigateurs.
Cela fonctionne cependant.
la source