Using WordPress ‘image_get_intermediate_size’ PHP filter

The image_get_intermediate_size WordPress PHP Filter allows you to modify the output of the image_get_intermediate_size() function.

Usage

add_filter('image_get_intermediate_size', 'my_custom_function', 10, 3);

function my_custom_function($data, $post_id, $size) {
  // your custom code here
  return $data;
}

Parameters

  • $data (array) – Array of file relative path, width, and height on success. May also include file absolute path and URL.
  • $post_id (int) – The ID of the image attachment.
  • $size (string|int[]) – Requested image size. Can be any registered image size name, or an array of width and height values in pixels (in that order).

More information

See WordPress Developer Resources: image_get_intermediate_size

Examples

Add custom image size

Modify the image size by adding custom width and height.

add_filter('image_get_intermediate_size', 'my_custom_image_size', 10, 3);

function my_custom_image_size($data, $post_id, $size) {
  if ($size == 'custom_size') {
    $data['width'] = 500;
    $data['height'] = 300;
  }
  return $data;
}

Modify image URL

Change the image URL for a specific size.

add_filter('image_get_intermediate_size', 'modify_image_url', 10, 3);

function modify_image_url($data, $post_id, $size) {
  if ($size == 'thumbnail') {
    $data['url'] = 'https://example.com/new-image-url.jpg';
  }
  return $data;
}

Limit maximum image width

Prevent the image width from exceeding a specific value.

add_filter('image_get_intermediate_size', 'limit_image_width', 10, 3);

function limit_image_width($data, $post_id, $size) {
  $max_width = 600;
  if ($data['width'] > $max_width) {
    $data['width'] = $max_width;
  }
  return $data;
}

Set a default image size

Set a default image size when the requested size is not available.

add_filter('image_get_intermediate_size', 'default_image_size', 10, 3);

function default_image_size($data, $post_id, $size) {
  if (empty($data)) {
    $data['width'] = 400;
    $data['height'] = 300;
  }
  return $data;
}

Modify image file path

Change the image file path for a specific size.

add_filter('image_get_intermediate_size', 'modify_image_file_path', 10, 3);

function modify_image_file_path($data, $post_id, $size) {
  if ($size == 'thumbnail') {
    $data['file'] = 'path/to/new-image.jpg';
  }
  return $data;
}