Consultar posts y tipos de post personalizados con meta key
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.

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.

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.

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

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

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!
