intermediate_image_sizes_advanced
云策文档标注
概述
intermediate_image_sizes_advanced 是一个 WordPress 过滤器,用于控制在图片上传时自动生成的中间尺寸。开发者可以通过此 Hook 自定义或排除特定图片类型的尺寸生成。
关键要点
- 过滤器名称:intermediate_image_sizes_advanced
- 参数:$new_sizes(关联数组,要创建的图片尺寸)、$image_meta(图片元数据,如宽度、高度、文件信息)、$attachment_id(附件 ID)
- 用途:过滤上传图片时自动生成的中间尺寸,允许基于图片类型或元数据动态调整尺寸列表
- 相关函数:wp_create_image_subsizes() 使用此过滤器来创建图片子尺寸并更新元数据
- 版本历史:从 WordPress 2.9.0 引入,4.4.0 添加 $image_meta 参数,5.3.0 添加 $attachment_id 参数
代码示例
function wpdocs_disable_upload_sizes( $sizes, $image_meta ) {
// 获取文件类型数据。
$filetype = wp_check_filetype( $image_meta['file'] );
$exclude_file_types = array(
'image/gif',
);
// 检查文件类型是否在排除列表中
if ( in_array( $filetype['type'], $exclude_file_types ) ) {
$sizes = array();
}
// 返回要创建的尺寸(如果是 GIF 图片则返回空数组)。
return $sizes;
}
add_filter( 'intermediate_image_sizes_advanced', 'wpdocs_disable_upload_sizes', 10, 2 );注意事项
此过滤器仅影响上传时自动生成的中间尺寸,不直接修改原始图片或已存在的尺寸。使用时需确保参数顺序和类型正确,以避免影响其他功能。
原文内容
Filters the image sizes automatically generated when uploading an image.
Parameters
$new_sizesarray-
Associative array of image sizes to be created.
$image_metaarray-
The image meta data: width, height, file, sizes, etc.
$attachment_idint-
The attachment post ID for the image.
Source
$new_sizes = apply_filters( 'intermediate_image_sizes_advanced', $new_sizes, $image_meta, $attachment_id );
Skip to note 2 content
Nick Papazetis
You can exclude certain image types from images sizes, like gifs
function wpdocs_disable_upload_sizes( $sizes, $image_meta ) { // Get filetype data. $filetype = wp_check_filetype( $image_meta['file'] ); $exclude_file_types = array( 'image/gif', ); // Check if file type is on exclude list if ( in_array( $filetype['type'], $exclude_file_types ) ) { $sizes = array(); } // Return sizes you want to create from image (None if image is gif.) return $sizes; } add_filter( 'intermediate_image_sizes_advanced', 'wpdocs_disable_upload_sizes', 10, 2 );