The intermediate_image_sizes_advanced WordPress PHP Filter lets you modify the image sizes that are automatically generated when you upload an image.
Usage
add_filter('intermediate_image_sizes_advanced', 'my_custom_function', 10, 3);
function my_custom_function($new_sizes, $image_meta, $attachment_id) {
// your custom code here
return $new_sizes;
}
Parameters
$new_sizes(array): Associative array of image sizes to be created.$image_meta(array): The image meta data such as width, height, file, sizes, etc.$attachment_id(int): The attachment post ID for the image.
More information
See WordPress Developer Resources: intermediate_image_sizes_advanced
Examples
Remove default image sizes
Remove all default image sizes when uploading a new image.
add_filter('intermediate_image_sizes_advanced', 'remove_default_image_sizes', 10, 3);
function remove_default_image_sizes($new_sizes) {
return [];
}
Add a custom image size
Add a custom image size named ‘custom-size’ with dimensions 500×500.
add_filter('intermediate_image_sizes_advanced', 'add_custom_image_size', 10, 3);
function add_custom_image_size($new_sizes) {
$new_sizes['custom-size'] = array('width' => 500, 'height' => 500, 'crop' => true);
return $new_sizes;
}
Modify existing image size
Modify the existing ‘medium’ image size dimensions to 400×400.
add_filter('intermediate_image_sizes_advanced', 'modify_existing_image_size', 10, 3);
function modify_existing_image_size($new_sizes) {
if (isset($new_sizes['medium'])) {
$new_sizes['medium']['width'] = 400;
$new_sizes['medium']['height'] = 400;
}
return $new_sizes;
}
Conditionally remove image size
Remove the ‘medium’ image size for images larger than 2000×2000.
add_filter('intermediate_image_sizes_advanced', 'conditionally_remove_image_size', 10, 3);
function conditionally_remove_image_size($new_sizes, $image_meta) {
if ($image_meta['width'] > 2000 && $image_meta['height'] > 2000) {
unset($new_sizes['medium']);
}
return $new_sizes;
}
Add multiple custom image sizes
Add two custom image sizes: ‘custom-small’ (300×300) and ‘custom-large’ (800×800).
add_filter('intermediate_image_sizes_advanced', 'add_multiple_custom_image_sizes', 10, 3);
function add_multiple_custom_image_sizes($new_sizes) {
$new_sizes['custom-small'] = array('width' => 300, 'height' => 300, 'crop' => true);
$new_sizes['custom-large'] = array('width' => 800, 'height' => 800, 'crop' => true);
return $new_sizes;
}