Consultas solo con imagen destacada

12

Quiero consultar 6 publicaciones, pero solo aquellas que tienen una imagen destacada adjunta. Estoy usando el método meta_key para esto con WP_Query como tal:

$args = array(
    'post_type'  => 'post',
    'meta_key' => '_thumbnail_id',
    'post_count' => 6 );
$query = new WP_Query($args);

Seguido por

<?php while($query->have_posts()) : $query->the_post(); ?>
    <h2><?php the_title(); ?></h2>
    <?php the_post_thumbnail('thumbnail'); ?>
<?php endwhile; ?>

Esto no parece funcionar. La consulta está devolviendo más de 6 publicaciones y también aquellas que no tienen una imagen destacada. ¿Alguna idea de lo que tengo mal aquí?

@chip: var_dump($query); da un gran resultado, así que lo he publicado en un pastebin

    
pregunta harryg 03.03.2013 - 19:52

2 respuestas

2

Al ejecutar el importador, debe marcar la casilla de verificación para descargar e importar todos los medios / archivos adjuntos.

Si no lo hace, las publicaciones seguirán teniendo un conjunto de imágenes destacadas, pero el archivo adjunto al que se refieren no será válido, y cualquier intento de llamar a the_post_thumbnail fallará. Usando tu código obtendrías solo el título de la publicación, y ninguna miniatura. Esto daría la impresión de que las publicaciones que no tienen una imagen destacada se están introduciendo. No es así, tienen una imagen destacada, simplemente no está disponible debido al error que cometió al importar.

Borre sus publicaciones y vuelva a importar usando la configuración correcta.

También para demostrar el punto, no intentó verificar las publicaciones, siempre verifique, por ejemplo:

if ( $query->have_posts() ) { // you never checked to see if no posts were found
    while($query->have_posts()) { // alt style syntax doesn't work with most IDEs
        $query->the_post(); // individual statement should be on individual line
        ?><h2><?php the_title(); ?></h2><?php // you only need open/close tags here, not every line, save yourself some time typing
        if ( has_post_thumbnail() ) { // only print out the thumbnail if it actually has one
            echo '<p>post says it has a featured image</p>'; // double checking
            the_post_thumbnail('thumbnail');
        } else {
            echo '<p>this post does not have a featured image</p>';
        }
    }
} else {
    echo '<p>no posts found</p>';
}

Si no ha marcado la casilla de verificación, obtendrá imágenes que indican que tienen una imagen destacada, pero no se muestra ninguna imagen

    
respondido por el Tom J Nowell 04.03.2013 - 01:29
20

A partir de WordPress 3.5, los Parámetros de consulta meta admiten EXISTS y NOT EXISTS como operadores de comparación. En el caso de que esté utilizando estos, puede omitir la parte value de la meta consulta. Pruebe los siguientes argumentos para su consulta:

$args = array(
   'post_type'  => 'post',
   'posts_per_page' => 6,
    'meta_query' => array(
        array(
         'key' => '_thumbnail_id',
         'compare' => 'EXISTS'
        ),
    )
);
    
respondido por el helgatheviking 03.03.2013 - 20:59

Lea otras preguntas en las etiquetas