WordPress Version: 5.5
/**
* Adds image shortcode with caption to editor.
*
* @since 2.6.0
*
* @param string $html The image HTML markup to send.
* @param integer $id Image attachment ID.
* @param string $caption Image caption.
* @param string $title Image title attribute (not used).
* @param string $align Image CSS alignment property.
* @param string $url Image source URL (not used).
* @param string $size Image size (`thumbnail`, `medium`, `large`, `full`, or added with `add_image_size()`) (not used).
* @param string $alt Image `alt` attribute (not used).
* @return string The image HTML markup with caption shortcode.
*/
function image_add_caption($html, $id, $caption, $title, $align, $url, $size, $alt = '')
{
/**
* Filters the caption text.
*
* Note: If the caption text is empty, the caption shortcode will not be appended
* to the image HTML when inserted into the editor.
*
* Passing an empty value also prevents the {@see 'image_add_caption_shortcode'}
* Filters from being evaluated at the end of image_add_caption().
*
* @since 4.1.0
*
* @param string $caption The original caption text.
* @param int $id The attachment ID.
*/
$caption = apply_filters('image_add_caption_text', $caption, $id);
/**
* Filters whether to disable captions.
*
* Prevents image captions from being appended to image HTML when inserted into the editor.
*
* @since 2.6.0
*
* @param bool $bool Whether to disable appending captions. Returning true from the filter
* will disable captions. Default empty string.
*/
if (empty($caption) || apply_filters('disable_captions', '')) {
return $html;
}
$id = (0 < (int) $id) ? 'attachment_' . $id : '';
if (!preg_match('/width=["\']([0-9]+)/', $html, $matches)) {
return $html;
}
$width = $matches[1];
$caption = str_replace(array("\r\n", "\r"), "\n", $caption);
$caption = preg_replace_callback('/<[a-zA-Z0-9]+(?: [^<>]+>)*/', '_cleanup_image_add_caption', $caption);
// Convert any remaining line breaks to <br />.
$caption = preg_replace('/[ \n\t]*\n[ \t]*/', '<br />', $caption);
$html = preg_replace('/(class=["\'][^\'"]*)align(none|left|right|center)\s?/', '$1', $html);
if (empty($align)) {
$align = 'none';
}
$shcode = '[caption id="' . $id . '" align="align' . $align . '" width="' . $width . '"]' . $html . ' ' . $caption . '[/caption]';
/**
* Filters the image HTML markup including the caption shortcode.
*
* @since 2.6.0
*
* @param string $shcode The image HTML markup with caption shortcode.
* @param string $html The image HTML markup.
*/
return apply_filters('image_add_caption_shortcode', $shcode, $html);
}