I want to query 6 posts, but only those which have a featured image attached. I am using meta_key
method for this with WP_Query
as such:
$args = array(
'post_type' => 'post',
'meta_key' => '_thumbnail_id',
'post_count' => 6 );
$query = new WP_Query($args);
Followed by
<?php while($query->have_posts()) : $query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php the_post_thumbnail('thumbnail'); ?>
<?php endwhile; ?>
This doesn’t seem to work. The query is returning more than 6 posts and also those which don’t have a featured image. Any ideas what I’ve got wrong here?
@chip: var_dump($query);
gives a large result so I have posted it in a pastebin
When running the importer, you must check the checkbox to download and import all media/attachments, and the original server must be reachable from the server conducting the import.
If you fail to do this, the posts will have no valid featured image, and fail to show in your loop, and any attempt to call
the_post_thumbnail
will fail giving the impression they have no featured image.To fix this, delete your posts, and re-import using the correct settings, making sure the old server is still accessible at its original URL.
Also to demonstrate the point, you made no attempt to actually check the posts, always check e.g.:
If you have not checked the checkbox, you will get images saying they have a featured image, but no image is shown
As of WordPress 3.5, the Meta Query Parameters support
EXISTS
andNOT EXISTS
as compare operators. In the case where you are using these, you can omit thevalue
part of the meta query. Try the following arguments for your query: