Как запросить несколько значений мета-ключа с одним и тем же ключом
$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
";
следующий код
<?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; ?>
У меня была та же проблема, когда не работала передача нескольких массивов для одного и того же ключа. Вместо этого просто используйте один массив, установите «значение» в массив значений и установите «сравнить» с IN:
источник
Вы должны создать псевдоним таблицы postmeta для второго значения:
Вы также можете сделать это сейчас с версии 3.1 с
meta_query
:источник
print_r( $the_query );
сразу после запроса?Ключ - это ключ key1, а значения 'value1' и 'value2' пробовали его как в текстовом, так и в числовом виде в новой установке с двадцать одиннадцатью. print_r ($ the_query); работает вывод выглядит нормально. Также пробовал key1 и key2 тоже не работает. Это работает, как только я ограничиваю его одним массивом. Проверено разными браузерами.
Это, однако, работает.
источник