wp_img_tag_add_width_and_height_attr

The timeline below displays how wordpress function wp_img_tag_add_width_and_height_attr has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.5

/**
 * Adds `width` and `height` attributes to an `img` HTML tag.
 *
 * @since 5.5.0
 *
 * @param string $image         The HTML `img` tag where the attribute should be added.
 * @param string $context       Additional context to pass to the filters.
 * @param int    $attachment_id Image attachment ID.
 * @return string Converted 'img' element with 'width' and 'height' attributes added.
 */
function wp_img_tag_add_width_and_height_attr($image, $context, $attachment_id)
{
    $image_src = preg_match('/src="([^"]+)"/', $image, $match_src) ? $match_src[1] : '';
    list($image_src) = explode('?', $image_src);
    // Return early if we couldn't get the image source.
    if (!$image_src) {
        return $image;
    }
    /**
     * Filters whether to add the missing `width` and `height` HTML attributes to the img tag. Default `true`.
     *
     * Returning anything else than `true` will not add the attributes.
     *
     * @since 5.5.0
     *
     * @param bool   $value         The filtered value, defaults to `true`.
     * @param string $image         The HTML `img` tag where the attribute should be added.
     * @param string $context       Additional context about how the function was called or where the img tag is.
     * @param int    $attachment_id The image attachment ID.
     */
    $add = apply_filters('wp_img_tag_add_width_and_height_attr', true, $image, $context, $attachment_id);
    if (true === $add) {
        $image_meta = wp_get_attachment_metadata($attachment_id);
        $size_array = wp_image_src_get_dimensions($image_src, $image_meta, $attachment_id);
        if ($size_array) {
            // If the width is enforced through style (e.g. in an inline image), calculate the dimension attributes.
            $style_width = preg_match('/style="width:\s*(\d+)px;"/', $image, $match_width) ? (int) $match_width[1] : 0;
            if ($style_width) {
                $size_array[1] = (int) round($size_array[1] * $style_width / $size_array[0]);
                $size_array[0] = $style_width;
            }
            $hw = trim(image_hwstring($size_array[0], $size_array[1]));
            return str_replace('<img', "<img {$hw}", $image);
        }
    }
    return $image;
}

WordPress Version: 5.5

/**
 * Adds `width` and `height` attributes to an `img` HTML tag.
 *
 * @since 5.5.0
 *
 * @param string $image         The HTML `img` tag where the attribute should be added.
 * @param string $context       Additional context to pass to the filters.
 * @param int    $attachment_id Image attachment ID.
 * @return string Converted 'img' element with 'width' and 'height' attributes added.
 */
function wp_img_tag_add_width_and_height_attr($image, $context, $attachment_id)
{
    $image_src = preg_match('/src="([^"]+)"/', $image, $match_src) ? $match_src[1] : '';
    list($image_src) = explode('?', $image_src);
    // Return early if we couldn't get the image source.
    if (!$image_src) {
        return $image;
    }
    /**
     * Filters whether to add the missing `width` and `height` HTML attributes to the img tag. Default `true`.
     *
     * Returning anything else than `true` will not add the attributes.
     *
     * @since 5.5.0
     *
     * @param bool   $value         The filtered value, defaults to `true`.
     * @param string $image         The HTML `img` tag where the attribute should be added.
     * @param string $context       Additional context about how the function was called or where the img tag is.
     * @param int    $attachment_id The image attachment ID.
     */
    $add = apply_filters('wp_img_tag_add_width_and_height_attr', true, $image, $context, $attachment_id);
    if (true === $add) {
        $image_meta = wp_get_attachment_metadata($attachment_id);
        $size_array = wp_image_src_get_dimensions($image_src, $image_meta, $attachment_id);
        if ($size_array) {
            $hw = trim(image_hwstring($size_array[0], $size_array[1]));
            return str_replace('<img', "<img {$hw}", $image);
        }
    }
    return $image;
}