I used custom post type, where 'thumbnail', 'medium' and 'large' sized not required. I need to disable this sizes and create function or plugin, where i can set, which image size is required for each custom post type.

My first step is hooking of get_intermediate_image_sizes function from wp-includes/media.php. I have added this code to functions.php but it not working :(

add_filter('get_intermediate_image_sizes', 'get_intermediate_image_sizes_fixed');
function get_intermediate_image_sizes_fixed() {
    global $_wp_additional_image_sizes;
    //$image_sizes = array('thumbnail', 'medium', 'large'); // Standard sizes
    $image_sizes = array();
    if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) )
        $image_sizes = array_merge( $image_sizes, array_keys( $_wp_additional_image_sizes ) );
return apply_filters( 'intermediate_image_sizes', $image_sizes );

UPD: Editing this line in media.php is working. Default types after changes not generating.

$image_sizes = array('thumbnail', 'medium', 'large');

But how to make work my hook?

  • 1
    would like an answer to this too
    – urok93
    Commented Dec 11, 2011 at 21:34
  • 2
    That's not how you use that filter. To clear default sizes you just need to add it with a very low priority and return an empty array. However that won't solve your problem, because that will affect all post types. I don't think there's a way to do what you want in the current WP version. Try requesting WP devs to add the $attachment_id argument to the filter inside this function. That way you can check the post type inside your hook Commented Dec 11, 2011 at 23:57
  • My step is only experiment but not full solution. How i can use filter correctly? P.S. Thank you for link.. Commented Dec 12, 2011 at 0:00
  • Any changes to WP that makes it possible now? Commented May 13, 2016 at 7:41
  • No changes. Still the same problem. Commented May 31, 2016 at 15:56

1 Answer 1


I think the only solution you have at the moment is to disable all intermediate image sizes:

add_filter( 'intermediate_image_sizes', '__return_empty_array', 99 );

And then manually generate them, depending on the post type, by hooking into 'wp_generate_attachment_metadata', where you do have access to the attachment id (and therefore to it's parent post):

function do_your_stuff( $data, $attachment_id ) {
  // generate intermediate images

  return $data;

add_filter( 'wp_generate_attachment_metadata', 'do_your_stuff', 10, 2 );

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.