0

The WordPress codex on wp_get_attachment_link says you can use the $permalink parameter to link to the page, not the image. But I would like to link to the post instead. I'm trying to get a list of images using the following (updated, see answers below):

<?php $new_query = new WP_Query('&showposts=1'); ?>
                        <?php while ($new_query->have_posts()) : $new_query->the_post(); ?>
                        <?php $args = array (
                               'post_type' => 'attachment',
                               'numberposts' => 18,
                               'orderby' => 'date',
                               'status' => 'publish',
                               'post_mime_type' => 'image',
                               'parent' => $post->ID
                        ); ?>
                        <?php $attachments = get_posts($args);
                               if ($attachments) {
                                   foreach ($attachments as $attachment) {
                                       echo '<li>';
                                       echo '<a href=" ' . get_permalink( $post->ID ) . '">';
                                       echo wp_get_attachment_image($attachment->ID, 'thumbnail' );
                                       echo '</a></li>';

                                   }
                               };

                               endwhile;

                               ?>   

Having trouble getting the images to link to the post. I'm not sure how to filter this to get the post, not the page.

1 Answer 1

1

Yes, if you pass third ($permalink) parameter as true in wp_get_attachment_link() image will link to attachment's page not image itself. You can use wp_get_attachment_link filter to change behavior of that parameter, but in this case it simply means overwriting whole function. Instead I would use wp_get_attachment_image() and get_permalink()

UPDATE

Maybe wp_get_attachment_image() would fit in this situation better. Here's also how your snipped would look like:

if ( $attachments ) {
    foreach ( $attachments as $attachment ) {
       echo '<li>';
       echo '<a href="' . get_permalink( $post->ID ) . '">';
       echo wp_get_attachment_image( $attachment->ID, 'thumbnail' );
       echo '</a></li>';
    }
}
6
  • Thanks for the reply. I would, however, like the image to link to the post and not the image page or image. Sorry if I was confusing in my question.
    – jw60660
    Commented Mar 10, 2012 at 13:07
  • You're welcome. Yes I know that, that's why you'll need get_permalink(), see update answer.
    – Mamaduka
    Commented Mar 10, 2012 at 13:37
  • If you don't mind me asking, if I wanted to pull attachments from a network, what changes would I make to this attachment loop?
    – jw60660
    Commented Mar 10, 2012 at 14:06
  • As network you mean WordPress Multi-Site?
    – Mamaduka
    Commented Mar 10, 2012 at 14:19
  • Yes, multisite, thank you. By the way, what you recommended is resulting in the images pulling nicely, but the images link to one post on the main site in my multisite installation. I am posting the exact code I used above. Thanks!
    – jw60660
    Commented Mar 10, 2012 at 14:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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