The get_attachment_link() WordPress PHP function retrieves the permalink for an attachment.
Usage
get_attachment_link($post, $leavename)
Input:
$post
: The ID of an attachment or the attachment object.$leavename
: A boolean value to indicate whether to keep the page name.
Output:
- Returns the permalink URL for the specified attachment.
Parameters
$post
(int|object) – Optional. Post ID or object. Default uses the global$post
. Default:null
$leavename
(bool) – Optional. Whether to keep the page name. Default:false
More information
See WordPress Developer Resources: get_attachment_link()
Examples
Displaying the attachment link
This code snippet displays the attachment link for a specific attachment ID:
$attachment_id = 1; $attachment_page = get_attachment_link($attachment_id);
<a href="<?php echo esc_url($attachment_page); ?>"><?php echo get_the_title($attachment_id); ?></a>
Displaying attached images and titles as a list
This code snippet displays all attached images and titles as a list of bullets:
if (have_posts()) : while (have_posts()) : the_post(); $args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => $post->ID ); $attachments = get_posts($args); if ($attachments) { echo '<ul>'; foreach ($attachments as $attachment) { echo '<li>'; the_attachment_link($attachment->ID, true); echo '<p>'; echo apply_filters('the_title', $attachment->post_title); echo '</p></li>'; } echo '</ul>'; } endwhile; endif;
Displaying attached files to a specific post
This code snippet displays all attached files to a specific post ID:
$post_id = 42; $args = array( 'post_type' => 'attachment', 'post_parent' => $post_id, 'post_mime_type' => 'application/pdf', ); $attachments = get_posts($args); if ($attachments) { echo '<ul>'; foreach ($attachments as $attachment) { $attachment_link = get_attachment_link($attachment->ID); echo '<li><a href="' . esc_url($attachment_link) . '">' . get_the_title($attachment->ID) . '</a></li>'; } echo '</ul>'; }
Displaying attached image with a custom size
This code snippet displays an attached image with a custom size:
$attachment_id = 1; $attachment_link = get_attachment_link($attachment_id); $image_src = wp_get_attachment_image_src($attachment_id, 'custom-size');
<a href="<?php echo esc_url($attachment_link); ?>"><img src="<?php echo esc_url($image_src[0]); ?>" alt="<?php echo get_the_title($attachment_id); ?>"></a>