Is there a hook which fires after all thumbnails are generated?

Thumbnails in WordPress can be generated by using wp_generate_attachment_metadata(), this function fires a filter after generating all the thumbnails wp_generate_attachment_metadata and the filter provides $metadata and $attachment_id to the hooked functions.

You can hook your custom function to this filter.

$metadata : Attachment metadata.
What you need is $metadata['sizes']['<size-name>'], the <size-name> is the name of thumbnail size added by add_image_size() or the default ones.
e.g.

$metadata[sizes] => Array
       (
           [thumbnail] => Array
               (
                   [file] => example_image-150x150.jpg
                   [width] => 150
                   [height] => 150
                   [mime-type] => image/jpeg
               )
           [medium] => Array
               (
                   [file] => example_image-4-300x194.jpg
                   [width] => 300
                   [height] => 194
                   [mime-type] => image/jpeg
               )
           [mysize] => Array
               (
                   [file] => example_image-4-400x400.jpg
                   [width] => 400
                   [height] => 400
                   [mime-type] => image/jpeg
               )
       )

from here you can know which sizes exist for the certain attachment, and only upload those sizes/thumbnails.

To get those thumbnails use a function like wp_get_attachment_image_src($id, $size_name) to retrieve the thumbnail urls.

(Optional) : Install the Force Regenerate Thumbnails plugin to rerun the wp_generate_attachment_metadata() for previously uploaded images too.

Leave a Comment