Example #1
0
/**
 * Create 'sizes' attribute value for an image.
 *
 * @since 4.4.0
 *
 * @param array|string $size          Image size. Accepts any valid image size name ('thumbnail', 'medium', etc.),
 *                                    or an array of width and height values in pixels (in that order).
 * @param array        $image_meta    Optional. The image meta data as returned by 'wp_get_attachment_metadata()'.
 * @param int          $attachment_id Optional. Image attachment ID. Either `$image_meta` or `$attachment_id` is needed
 *                                    when using the image size name as argument for `$size`.
 * @param string       $image_url     Optional. The URL to the image file.
 *
 * @return string|bool A valid source size value for use in a 'sizes' attribute or false.
 */
function wp_get_attachment_image_sizes($size, $image_meta = null, $attachment_id = 0, $image_url = null)
{
    $width = 0;
    if (is_numeric($size)) {
        $width = absint($size);
    } elseif (is_array($size)) {
        $width = absint($size[0]);
    } elseif (is_string($size)) {
        if (!$image_meta && $attachment_id) {
            $image_meta = wp_get_attachment_metadata($attachment_id);
        }
        if (is_array($image_meta)) {
            $size_array = _wp_get_image_size_from_meta($size, $image_meta);
            if ($size_array) {
                $width = absint($size_array[0]);
            }
        }
    }
    if (!$width) {
        return false;
    }
    // Setup the default 'sizes' attribute.
    $sizes = sprintf('(max-width: %1$dpx) 100vw, %1$dpx', $width);
    /**
     * Filter the output of 'wp_get_attachment_image_sizes()'.
     *
     * @since 4.4.0
     *
     * @param string       $sizes         A source size value for use in a 'sizes' attribute.
     * @param array|string $size          Image size. Image size name, or an array of width and height
     *                                    values in pixels (in that order).
     * @param array        $image_meta    The image meta data as returned by 'wp_get_attachment_metadata()'.
     * @param int          $attachment_id Image attachment ID of the original image.
     * @param string       $image_url     Optional. The URL to the image file.
     */
    return apply_filters('wp_get_attachment_image_sizes', $sizes, $size, $image_meta, $attachment_id, $image_url);
}
Example #2
0
/**
 * Creates a 'sizes' attribute value for an image.
 *
 * @since 4.4.0
 *
 * @param array|string $size          Image size to retrieve. Accepts any valid image size, or an array
 *                                    of width and height values in pixels (in that order). Default 'medium'.
 * @param string       $image_src     Optional. The URL to the image file. Default null.
 * @param array        $image_meta    Optional. The image meta data as returned by 'wp_get_attachment_metadata()'.
 *                                    Default null.
 * @param int          $attachment_id Optional. Image attachment ID. Either `$image_meta` or `$attachment_id`
 *                                    is needed when using the image size name as argument for `$size`. Default 0.
 * @return string|bool A valid source size value for use in a 'sizes' attribute or false.
 */
function wp_calculate_image_sizes($size, $image_src = null, $image_meta = null, $attachment_id = 0)
{
    $width = 0;
    if (is_array($size)) {
        $width = absint($size[0]);
    } elseif (is_string($size)) {
        if (!$image_meta && $attachment_id) {
            $image_meta = get_post_meta($attachment_id, '_wp_attachment_metadata', true);
        }
        if (is_array($image_meta)) {
            $size_array = _wp_get_image_size_from_meta($size, $image_meta);
            if ($size_array) {
                $width = absint($size_array[0]);
            }
        }
    }
    if (!$width) {
        return false;
    }
    // Setup the default 'sizes' attribute.
    $sizes = sprintf('(max-width: %1$dpx) 100vw, %1$dpx', $width);
    /**
     * Filter the output of 'wp_calculate_image_sizes()'.
     *
     * @since 4.4.0
     *
     * @param string       $sizes         A source size value for use in a 'sizes' attribute.
     * @param array|string $size          Requested size. Image size or array of width and height values
     *                                    in pixels (in that order).
     * @param string|null  $image_src     The URL to the image file or null.
     * @param array|null   $image_meta    The image meta data as returned by wp_get_attachment_metadata() or null.
     * @param int          $attachment_id Image attachment ID of the original image or 0.
     */
    return apply_filters('wp_calculate_image_sizes', $sizes, $size, $image_src, $image_meta, $attachment_id);
}
Example #3
0
/**
 * Create `sizes` attribute value for an image.
 *
 * @since 4.4.0
 *
 * @param array|string $size          Image size. Accepts any valid image size name (thumbnail, medium, etc.),
 *                                    or an array of width and height values in pixels (in that order).
 * @param array        $image_meta    Optional. The image meta data.
 * @param int          $attachment_id Optional. Image attachment ID. Either $image_meta or $attachment_id is needed
 *                                    when using image size name.
 *
 * @return string|bool A valid source size value for use in a 'sizes' attribute or false.
 */
function wp_get_attachment_image_sizes($size, $image_meta = null, $attachment_id = 0)
{
    $width = 0;
    if (is_numeric($size)) {
        $width = absint($size);
    } elseif (is_array($size)) {
        $width = absint($size[0]);
    } elseif (is_string($size)) {
        if (!$image_meta && $attachment_id) {
            $image_meta = wp_get_attachment_metadata($attachment_id);
        }
        if ($image_meta) {
            $width = _wp_get_image_size_from_meta($size, $image_meta);
            if ($width) {
                $width = $width[0];
            }
        }
    }
    if (!$width) {
        return false;
    }
    // Setup the default sizes attribute.
    $sizes = sprintf('(max-width: %1$dpx) 100vw, %1$dpx', (int) $width);
    /**
     * Filter the output of wp_get_attachment_image_sizes().
     *
     * @since 4.4.0
     *
     * @param string       $sizes         A source size value for use in a 'sizes' attribute.
     * @param array|string $size          Image size. Accepts any valid image size, or an array of width and height
     *                                    values in pixels (in that order). Default 'medium'.
     * @param array        $image_meta    The image meta data.
     * @param int          $attachment_id Post ID of the original image.
     */
    return apply_filters('wp_get_attachment_image_sizes', $sizes, $size, $image_meta, $attachment_id);
}