Consultar posts y tipos de post personalizados con meta key

2 feb 2013, 20:29:59
Vistas: 15.2K
Votos: 1

Estoy intentando consultar el custom post type ai1ec_event de all-in-one-event-calendar junto con posts normales de WordPress en un slider de mi página de inicio. Eso funciona bastante bien.

Ahora quiero consultar solo los posts que tengan el valor "teaser" en el campo personalizado, pero eso solo devuelve posts normales, no los eventos.

<?php
query_posts( array(
'post_type'=>array('post','ai1ec_event'),   
'posts_per_page' => 50,
'meta_query' => array(
    array(
        'key' => 'teaser',    // Clave del campo personalizado
        'value' => 'on'       // Valor a buscar        
    )
)
);
?>

Incluso si omito la consulta de tipo de post:

<?php
query_posts( array(
'meta_query' => array(
    array(
        'key' => 'teaser',    // Clave del meta campo
        'value' => 'on'       // Valor requerido        
    )
)
);
?>

solo devuelve posts, no eventos.

0
Todas las respuestas a la pregunta 1
6

Me temo que WP_Query no puede recuperar (Entradas con campo personalizado) o (ai1ec_event). Tendrás que consultar primero uno, luego el segundo y fusionar esos arreglos. Usa WP_Query en lugar de query_posts.

Acabo de probarlo en mi instalación local y este código llamado desde index.php de twentytwelve funciona (trae una entrada con título "Hello post" y un ai1ec_event con título "Event" - ambos con el campo personalizado "teaser" con valor "on"

$events_query = new WP_Query( array('post_type' => array('ai1ec_event', 'post'), 'meta_query' => array( array( 'key' => 'teaser', 'value' => 'on' ) )) );
while ( $events_query->have_posts() ) :
    $events_query->the_post();
    echo get_the_title() . '<br/>';
endwhile;

Debo mencionar que ambos (la entrada y el evento) fueron creados por el usuario administrador - he revisado el código y hay una parte extensa con capacidades personalizadas.

2 feb 2013 21:08:57
Comentarios

No creo que esto funcione. Reporté el comportamiento incorrecto. Mira la pregunta corregida arriba. No me di cuenta al principio, pero incluir la consulta de meta clave SIEMPRE devuelve solo las publicaciones.

Sebastian Starke Sebastian Starke
2 feb 2013 22:00:26

¿tu ai1ec_event contiene el campo personalizado teaser?

david.binda david.binda
2 feb 2013 22:10:18

Sí lo tiene, y está activado.

Sebastian Starke Sebastian Starke
2 feb 2013 22:12:00

Acabo de verificar esta tarea en mi instalación local - he modificado la respuesta anterior.

david.binda david.binda
2 feb 2013 22:39:12

Lo verifiqué dos veces: Para mí eso solo devuelve posts. ¿Cuál puede ser la razón de este comportamiento?

Sebastian Starke Sebastian Starke
2 feb 2013 22:51:33

Ya lo tengo: La sintaxis exacta debe ser: 'meta_query' => array( array( 'key' => 'teaser', 'value' => '"on"', 'compare' => 'LIKE' ) ) No estoy seguro si mi código original habría funcionado, pero fuiste de gran ayuda, así que marcaré tu respuesta como correcta. ¡Gracias!

Sebastian Starke Sebastian Starke
2 feb 2013 23:15:02
Mostrar los 1 comentarios restantes