Como consultar vários valores de meta-chave com a mesma chave
$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
";
próximo código
<?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; ?>
Eu tive o mesmo problema em que a passagem de várias matrizes para a mesma chave não estava funcionando. Em vez disso, basta usar uma matriz, defina 'value' como uma matriz de valores e defina 'compare' como IN:
fonte
Você deve alias a tabela postmeta para o segundo valor:
Você também pode fazer isso agora desde o 3.1 com um
meta_query
:fonte
print_r( $the_query );
imediatamente após a consulta?A chave é key1 e os valores 'value1' e 'value2' tentaram texto e numérico em uma nova instalação com vinte e onze. print_r ($ the_query); saída do trabalho parece normal. Também tentei key1 e key2 também não funciona. Funciona assim que eu o limite a uma matriz. Verificado com diferentes navegadores.
No entanto, isso funciona.
fonte