Publicações de consulta apenas com imagem em destaque

12

Eu quero consultar 6 postagens, mas apenas aquelas que têm uma imagem em destaque anexada. Eu estou usando o método meta_key para isso com 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; ?>

Isso não parece funcionar. A consulta está retornando mais de seis postagens e também aquelas que não têm uma imagem em destaque. Alguma idéia do que eu tenho errado aqui?

@chip: var_dump($query); fornece um resultado grande, por isso postei-o em um pastebin

    
por harryg 03.03.2013 / 19:52

2 respostas

2

Ao executar o importador, você deve marcar a caixa de seleção para fazer o download e importar todas as mídias / anexos.

Se você não o fizer, as postagens ainda terão um conjunto de imagens em destaque, mas o anexo ao qual elas se referem será inválido, e qualquer tentativa de chamar the_post_thumbnail falhará. Usando seu código, você obteria apenas o título da postagem e nenhuma miniatura. Isso daria a impressão de que as postagens que não têm imagem em destaque estão sendo puxadas. Não é o caso, elas têm uma imagem em destaque, ela não está disponível por causa do erro que você cometeu ao importar.

Exclua suas postagens e reimporte usando as configurações corretas.

Também para demonstrar o ponto, você não tentou verificar as postagens, verifique sempre, por exemplo:

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>';
}

Se você não marcou a caixa de seleção, verá imagens dizendo que elas têm uma imagem em destaque, mas nenhuma imagem é mostrada

    
por Tom J Nowell 04.03.2013 / 01:29
20

No WordPress 3.5, os Meta Query Parameters suportam EXISTS e NOT EXISTS como operadores de comparação. No caso em que você está usando, você pode omitir a parte value da consulta meta. Tente os seguintes argumentos para sua consulta:

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