Abfragen mehrerer Metaschlüsselwerte mit demselben Schlüssel
$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
";
nächster Code
<?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; ?>
Ich hatte das gleiche Problem, bei dem das Übergeben mehrerer Arrays für denselben Schlüssel nicht funktionierte. Verwenden Sie stattdessen nur ein Array, setzen Sie 'value' auf ein Array von Werten und 'compare' auf IN:
quelle
Sie müssen die Postmeta-Tabelle für den zweiten Wert aliasen:
Dies können Sie seit 3.1 auch mit einem
meta_query
:quelle
print_r( $the_query );
unmittelbar nach der Abfrage?Key ist key1 und die Werte 'value1' und 'value2' haben es in einer Neuinstallation mit 21 sowohl mit Text als auch mit Zahlen versucht. print_r ($ the_query); Die Werksausgabe sieht normal aus. Auch versucht, key1 und key2 funktioniert auch nicht. Es funktioniert, sobald ich es auf ein Array beschränke. Mit verschiedenen Browsern überprüft.
Dies funktioniert jedoch.
quelle