Cómo consultar valores de metaclaves múltiples con la misma clave
$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
";
siguiente 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; ?>
Tuve el mismo problema en el que pasar múltiples arreglos para la misma clave no funcionaba. En su lugar, solo use una matriz, establezca 'valor' en una matriz de valores y establezca 'comparar' en IN:
fuente
Debe alias la tabla postmeta para el segundo valor:
También puede hacer esto ahora desde 3.1 con un
meta_query
:fuente
print_r( $the_query );
inmediatamente después de la consulta?La clave es clave1 y los valores 'valor1' y 'valor2' lo probaron tanto en texto como numérico en una nueva instalación con veinte once. print_r ($ the_query); El resultado de trabajo parece normal. También probé key1 y key2 tampoco funciona. Funciona tan pronto como lo limito a una matriz. Comprobado con diferentes navegadores.
Esto sin embargo funciona.
fuente