I have added a custom field to the image attachement. When this custom field is checked the image will be part of a carousel on the home page. Now i am able to get the custom field to work and save the selected value, but how do i query the database so only the post with the custom field checked will be selected and their parent post.

In the end i want a shortcode with output like:

<a href="link-to-permalink-post"><img alt="attachment-title" src="img-src-link"/></a>
<div class="caption"><p>attachment-title</p></div>

I think in need to use get_post_meta but how??

1 Answer 1

$args = array( 'post_type' => 'attachment',***'meta_key'=>'your meta key','meta_value'=>'your meta value',*** 'numberposts' => -1, 'post_status' => null, 'post_parent' => $post->ID ); 
$attachments = get_posts($args);
if ($attachments) {
    foreach ( $attachments as $attachment ) {
        echo apply_filters( 'the_title' , $attachment->post_title );
        the_attachment_link( $attachment->ID , false );
  • ah almost there, i see however the meta-value is stored like a:2:{i:0;s:0:"";i:1;s:20:"in-carousel-homepage";} can this be the cause your solution doesn't work?
    – alex
    Mar 26, 2012 at 11:10
  • ah turned out i had this custom field saved as array, but it wasn't neccesary. So i saved just a single value.
    – alex
    Mar 26, 2012 at 11:19
  • do you know how i get the permalink of the attachment parent ? <a href="'. get_permalink($post->ID).'"><img alt="'.$attachment->post_title.'" permalink didn't work
    – alex
    Mar 27, 2012 at 11:32
  • 1
    @alex $post->ID would not work, as $post will be overridden when you use get_posts with $attachments = get_posts($args); and loop it, so first you assing your post id to another varaible like $parent_post_id = $post->id and then go for attachment loop and then use get_permalink($parent_post_id)... Mar 27, 2012 at 13:32
  • tx Rajeev, but i overlooked one thing. In my case i want to have the permalink to the post the image is original attached to. At the moment all images in my carousel point to TEST. Test is the title of my test page with carousel shortcode.
    – alex
    Mar 27, 2012 at 14:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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