The ‘prepend_attachment’ is a WordPress PHP filter that allows you to modify the attachment markup before it is added to the post content.
Table of contents
Usage
To use this filter, you need to create a function and hook it to the 'prepend_attachment' filter, like this:
function your_function_name( $attachment_markup ) {
// Your code here
return $attachment_markup;
}
add_filter( 'prepend_attachment', 'your_function_name' );
Parameters
$p(string): The attachment HTML output.
Examples
Add a custom CSS class to the attachment markup
function add_custom_class( $attachment_markup ) {
return str_replace( '<a ', '<a class="custom-class" ', $attachment_markup );
}
add_filter( 'prepend_attachment', 'add_custom_class' );
This code adds a custom CSS class named “custom-class” to the attachment markup.
Wrap the attachment in a div
function wrap_attachment_div( $attachment_markup ) {
return '<div class="attachment-wrapper">' . $attachment_markup . '</div>';
}
add_filter( 'prepend_attachment', 'wrap_attachment_div' );
This code wraps the attachment markup in a div with the class “attachment-wrapper”.
Add a download link below the attachment
function add_download_link( $attachment_markup ) {
$download_link = '<a href="' . wp_get_attachment_url() . '" download>Download</a>';
return $attachment_markup . $download_link;
}
add_filter( 'prepend_attachment', 'add_download_link' );
This code adds a download link below the attachment markup.
Remove the link from the attachment markup
function remove_attachment_link( $attachment_markup ) {
return preg_replace( '/<a[^>]*>/', '', $attachment_markup );
}
add_filter( 'prepend_attachment', 'remove_attachment_link' );
This code removes the link from the attachment markup, leaving only the image.
Change the attachment markup to a responsive image
function responsive_attachment( $attachment_markup ) {
$attachment_id = get_post_thumbnail_id();
$srcset = wp_get_attachment_image_srcset( $attachment_id );
return preg_replace( '/<img([^>]*)>/', '<img$1 srcset="' . $srcset . '">', $attachment_markup );
}
add_filter( 'prepend_attachment', 'responsive_attachment' );
This code changes the attachment markup to include the srcset attribute, making the image responsive.