Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

Is there a way to filter posts by featured image when initialising a WP_Query object?

Example

$my_query = WP_Query(array("has_thumbnail"=>true));

or, more ideally

$my_query = WP_Query(array("has_thumbnail_size"=>"custom_size"));
share|improve this question

2 Answers 2

Technically featured image is custom field with name _thumbnail_id that holds attachment ID. So you can easily query with something like:

$args = array(
    'meta_query' => array(
        array(
            'key' => '_thumbnail_id',
        )
    )
 );
$query = new WP_Query( $args );

Size on other hand is attribute of that attachment and not post itself. You will need to loop through attachment and get sizes they have (if I remember right it should be in data returned by wp_get_attachment_metadata()).

share|improve this answer

Post thumbnails in WP are stored as meta-data. In /wp-includes/post-thumbnail-template.php, WP retrieves the post thumbnail ID by using the _thumbnail_id value, which can be used as a filter in your WP_Query. When used in this way, WP will check the retrieved posts to see if that meta_key value exists, and if so, it will include those posts in the query, excluding all others. Using the example provided, it would look something like this.

$my_query = WP_Query(array('meta_key'=>'_thumbnail_id'));
share|improve this answer
2  
Please explain why this will solve the problem, how it should be used and does it work. –  Pieter Goosen Jul 21 at 19:14
    
Answer updated. Please let me know if further explanation is needed. Sorry, there's not many details out there on this, so you kinda have to dig for it. –  nnoom Jul 22 at 0:22

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.