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.

I have a WP blog with a few pages and posts and several categories. I want to write a loop to retrieve images attached to the posts (not the pages) and only those from a specific category and it's children. The category id is 60.

This is the WP_Query call:

$my_query = new WP_Query( array(
  'post_type' => 'attachment',
  'cat' => '60',
  'post_mime_type' =>'image',
  'posts_per_page' => $batch_size,
  'nopaging' => false,
  'post_status' => 'all',
  'post_parent' => null,
  'meta_key' => 'my_hash',
  'orderby' => 'meta_value'
) );

But I get nothing!

What am I doing wrong?

share|improve this question

2 Answers 2

up vote 0 down vote accepted

You'll need to first grab the posts, then grab the attachments that are children of said posts.

$my_query = new WP_Query( array(
    'meta_key' => 'my_hash',
    'nopaging' => true,
    'orderby' => 'meta_value',
    'fields' => 'ids',
    'cat' => '60',
));

if ( $post_ids = $my_query->get_posts() ) {
    $post_ids = implode( ',', $post_ids );
    $atts_ids = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_parent IN($post_ids) AND post_type = 'attachment'" );   

    $my_query->query( array(
        'posts_per_page' => $batch_size,
        'post_mime_type' =>'image',
        'post_status' => 'all',
        'post_type' => 'attachment',
        'post__in' => $atts_ids,
    ));
}
share|improve this answer
    
I tried making this change to this Image Wall plugin, but I was unable to get any success. Could you have a go for me? Thanks. –  aalaap Jun 27 '12 at 11:01
    
This plugin currently displays a wall with images from all posts, pages etc. on the blog. I want to restrict it to posts from a particular category or categories. –  aalaap Jun 27 '12 at 11:08
    
I asked the developer of the plugin directly and he liked the idea, so he's looking into it! :-) –  aalaap Jun 28 '12 at 10:18

Attachment posts don't have categories, their parents 'post' posts do, so you have a two step problem.

  • Find the IDs of the posts of type post in the category ( 60? )
  • Find the attachments that have a post_parent that is in the list we found in our first query
share|improve this answer
    
Thanks - I was going to try this out in code, but @TheDeadMedic already did it for me! –  aalaap Jun 27 '12 at 7:49

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.