Filtrar WP_Query para posts que tienen un cierto meta-valor

21 dic 2010, 10:04:32
Vistas: 25.2K
Votos: 8

¿Cómo filtrar WP_Query para posts que tienen un cierto meta-valor, sin usar una Consulta Select Personalizada?

Tengo un posttype personalizado con meta-key: "open", y opciones de meta-value: "yes" o "no".

Me gustaría mostrar solo los posts con meta_value = yes, para meta_key = "open".

function filter_where($where = '') {    

    $open = "yes";

    // $where .= " AND post_date > '" . date('Y-m-d', strtotime('-2 days')) . "'";
    return $where;
}
add_filter('posts_where', 'filter_where');
1
Comentarios

¿Estás haciendo esto en un archivo de plantilla? ¿Puedes publicar el código completo de tu archivo de plantilla entonces? ¿Es este el bucle principal de esta página?

Jan Fabry Jan Fabry
28 dic 2010 12:53:28
Todas las respuestas a la pregunta 2
5
14

No estoy seguro por tu redacción si no lo habías intentado con el argumento de consulta o si no funcionó.

$the_query = new WP_Query(array( 'meta_key' => 'open', 'meta_value' => 'yes' ));

Parámetros de Campos Personalizados en el Codex.

21 dic 2010 11:19:10
Comentarios

gracias por tu rápida respuesta. Lo intenté, pero por alguna razón no funciona para mí. Me devuelve un error 404.

Henk Jan Henk Jan
21 dic 2010 11:56:15

¿Dónde colocaste el código?

t31os t31os
21 dic 2010 22:34:54

Lo puse en un array $args después de mi configuración $paged: $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; y antes de: $temp = $wp_query; $wp_query= null; $wp_query = new WP_Query($args);

Henk Jan Henk Jan
22 dic 2010 13:17:17

@Henk Jan por favor añade el código a tu pregunta, los comentarios no son adecuados para esto

Rarst Rarst
22 dic 2010 13:28:22

mi tipo de entrada personalizada no estaba registrado correctamente en la base de datos. Después de solucionar eso, tu solución funcionó perfectamente. Gracias.

Henk Jan Henk Jan
19 ene 2011 13:22:46
3
 $querystr = "
    SELECT wposts.* 
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
    WHERE wposts.ID = wpostmeta.post_id 
    AND wpostmeta.meta_key = 'custom-key' 
    AND wposts.post_type = 'page' 
    ORDER BY wpostmeta.meta_value DESC
    ";
8 oct 2012 21:31:31
Comentarios

Una explicación nos diría por qué esto es una respuesta.

Brian Fegter Brian Fegter
8 oct 2012 22:53:10

Doble eso. Además: Usa los métodos $wpdb cuando hagas consultas.

kaiser kaiser
9 oct 2012 01:08:34

Definitivamente quieres usar WP_Query no SQL crudo. ¿Por qué? Cachés, multisitio, lo que sea.

O. Jones O. Jones
13 jun 2023 18:42:12