wp_get_registered_image_subsizes()
云策文档标注
概述
wp_get_registered_image_subsizes() 函数用于获取所有已注册图像子尺寸的规范化列表。它通过结合默认尺寸和插件或主题添加的额外尺寸,返回一个关联数组,包含每个尺寸的宽度、高度和裁剪信息。
关键要点
- 返回一个关联数组,键为图像尺寸名称,值为包含 'width'、'height' 和 'crop' 的子数组。
- 函数首先获取额外图像尺寸(通过 wp_get_additional_image_sizes()),然后遍历所有中间图像尺寸(通过 get_intermediate_image_sizes())。
- 对于每个尺寸,优先从额外尺寸中获取宽度、高度和裁剪设置,否则从 WordPress 选项(如 {$size_name}_size_w)中获取。
- 如果宽度和高度都为空,则跳过该尺寸;裁剪设置会被规范化为布尔值或数组。
代码示例
function wp_get_registered_image_subsizes() {
$additional_sizes = wp_get_additional_image_sizes();
$all_sizes = array();
foreach ( get_intermediate_image_sizes() as $size_name ) {
$size_data = array(
'width' => 0,
'height' => 0,
'crop' => false,
);
if ( isset( $additional_sizes[ $size_name ]['width'] ) ) {
$size_data['width'] = (int) $additional_sizes[ $size_name ]['width'];
} else {
$size_data['width'] = (int) get_option( "{$size_name}_size_w" );
}
if ( isset( $additional_sizes[ $size_name ]['height'] ) ) {
$size_data['height'] = (int) $additional_sizes[ $size_name ]['height'];
} else {
$size_data['height'] = (int) get_option( "{$size_name}_size_h" );
}
if ( empty( $size_data['width'] ) && empty( $size_data['height'] ) ) {
continue;
}
if ( isset( $additional_sizes[ $size_name ]['crop'] ) ) {
$size_data['crop'] = $additional_sizes[ $size_name ]['crop'];
} else {
$size_data['crop'] = get_option( "{$size_name}_crop" );
}
if ( ! is_array( $size_data['crop'] ) || empty( $size_data['crop'] ) ) {
$size_data['crop'] = (bool) $size_data['crop'];
}
$all_sizes[ $size_name ] = $size_data;
}
return $all_sizes;
}注意事项
- 此函数在 WordPress 5.3.0 版本中引入,用于统一处理图像尺寸数据。
- 返回的数组可用于比较现有图像子尺寸(如通过 wp_get_missing_image_subsizes())或生成新尺寸(如通过 wp_create_image_subsizes())。
- 相关函数包括 wp_get_additional_image_sizes()、get_intermediate_image_sizes() 和 get_option(),开发者应熟悉这些以理解尺寸来源。
原文内容
Returns a normalized list of all currently registered image sub-sizes.
Source
function wp_get_registered_image_subsizes() {
$additional_sizes = wp_get_additional_image_sizes();
$all_sizes = array();
foreach ( get_intermediate_image_sizes() as $size_name ) {
$size_data = array(
'width' => 0,
'height' => 0,
'crop' => false,
);
if ( isset( $additional_sizes[ $size_name ]['width'] ) ) {
// For sizes added by plugins and themes.
$size_data['width'] = (int) $additional_sizes[ $size_name ]['width'];
} else {
// For default sizes set in options.
$size_data['width'] = (int) get_option( "{$size_name}_size_w" );
}
if ( isset( $additional_sizes[ $size_name ]['height'] ) ) {
$size_data['height'] = (int) $additional_sizes[ $size_name ]['height'];
} else {
$size_data['height'] = (int) get_option( "{$size_name}_size_h" );
}
if ( empty( $size_data['width'] ) && empty( $size_data['height'] ) ) {
// This size isn't set.
continue;
}
if ( isset( $additional_sizes[ $size_name ]['crop'] ) ) {
$size_data['crop'] = $additional_sizes[ $size_name ]['crop'];
} else {
$size_data['crop'] = get_option( "{$size_name}_crop" );
}
if ( ! is_array( $size_data['crop'] ) || empty( $size_data['crop'] ) ) {
$size_data['crop'] = (bool) $size_data['crop'];
}
$all_sizes[ $size_name ] = $size_data;
}
return $all_sizes;
}
Changelog
| Version | Description |
|---|---|
| 5.3.0 | Introduced. |