The img_caption_shortcode WordPress PHP Filter allows you to customize the default caption shortcode output for images in your posts.
Usage
add_filter('img_caption_shortcode', 'your_custom_function', 10, 3); function your_custom_function($output, $attr, $content) { // your custom code here return $output; }
Parameters
- $output (string): The default caption output, initially empty.
- $attr (array): Attributes of the caption shortcode.
- $content (string): The image element, possibly wrapped in a hyperlink.
More information
See WordPress Developer Resources: img_caption_shortcode
Examples
Add a CSS class to the caption container
This example adds a custom CSS class to the caption container.
add_filter('img_caption_shortcode', 'add_custom_caption_class', 10, 3); function add_custom_caption_class($output, $attr, $content) { return '<div class="custom-caption">' . $content . '</div>'; }
Modify the caption text
This example appends custom text to the caption.
add_filter('img_caption_shortcode', 'modify_caption_text', 10, 3); function modify_caption_text($output, $attr, $content) { $caption = isset($attr['caption']) ? $attr['caption'] : ''; $new_caption = $caption . ' - Custom Text'; return str_replace($caption, $new_caption, $output); }
Wrap the image in a custom container
This example wraps the image in a custom container with a specific CSS class.
add_filter('img_caption_shortcode', 'wrap_image_custom_container', 10, 3); function wrap_image_custom_container($output, $attr, $content) { return '<div class="custom-image-container">' . $content . '</div>'; }
Add an icon to the caption
This example adds an icon to the beginning of the caption.
add_filter('img_caption_shortcode', 'add_icon_to_caption', 10, 3); function add_icon_to_caption($output, $attr, $content) { $caption = isset($attr['caption']) ? $attr['caption'] : ''; $icon = '<i class="fas fa-camera"></i> '; $new_caption = $icon . $caption; return str_replace($caption, $new_caption, $output); }
Remove hyperlink from the image
This example removes the hyperlink from the image element within the caption.
add_filter('img_caption_shortcode', 'remove_image_hyperlink', 10, 3); function remove_image_hyperlink($output, $attr, $content) { return preg_replace('/<a[^>]*>|<\/a>/', '', $content); }