I can get a list of the most recent image attachments like so:
$attachments = get_posts( array(
'post_type' => 'attachment',
'posts_per_page' => $number,
'post_mime_type' => 'image'
) );
This returns all images that have been recently uploaded, whether they are attached to a post or page, or unattached through the Media menu.
What I’d like is to limit that list to only images that are attached to a custom post type I’ve created. (The custom post type is not that important; the same question could be: ‘only images attached to Posts’ or ‘only images attached to Pages.’)
I realize I could test each image after running the above query and eliminate any whose parent is not the right post type, but I want to return a specific number of images ($number
), and this method could eliminate some or all of the returned images!
Did you try adding a filter to get_posts. This isn’t tested, just a thought after a bit of searching :
EDIT :
After rereading, I don’t think it accomplishes what you’re trying to do, I think it will display both attachments, and posts of your CPT.
Guess i’ill leave it here in case it gives you any ideas.
EDIT 2:
The only other way besides filtering in PHP that I can think of would be a custom sql query, and then setting up the post data. EX :
More info: WordPress Codex
First you get the recent modified posts for your CPT only. Then get their attachments. Off course you can have some logic to limit array of attachments.
put this code within the loop in single custom post type