为图像创建“尺寸”属性值。

原型

wp_calculate_image_sizes( array|string $size, string $image_src = null, array $image_meta = null, int $attachment_id )

参数

$size (array|string) (Required) 要检索的图像大小。接受任何有效的图像大小,或以像素为单位的宽度和高度值数组(按此顺序)。默认’中等’。

$image_src (string) (Optional)  图像文件的URL。

$image_meta (array) (Optional)  由’wp_get_attachment_metadata()‘返回的图像元数据。

$attachment_id (int) (Optional)  图片附件ID。使用图像大小名称作为$ size的参数时,需要$ image_meta或$ attachment_id。默认值为0。

返回值

(string|bool)  用于“sizes”属性的有效源大小值或false。

源文件

路径:wp-includes/media.php

<?php
...
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 = 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 );
	/**
	 * Filters 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 );
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/wp_calculate_image_sizes/