Example of how hook into the attachment metadata while uploading an attachment, in this case to modify the metadata.
This example checks if the attachment being uploaded is a webP image, and if yes, then set a custom thumbnail metadata. This specific example was needed before WordPress 5.8, when WordPress didn’t work with webP images. This specific example is no longer needed, but serves as a good example for how to hook into and change attachment metadata, including modifying the thumbnail URL, while uploading an image.
/** * When a webp image is uploaded, save the attachment metadata, * including metadata for a thumbnail size file */ add_filter('wp_generate_attachment_metadata', function ($metadata, $attachment_id, $context) { if('create' !== $context || ! empty($metadata)) return $metadata; $post = get_post( $attachment_id ); if ( ! $post ) return $metadata; if('image/webp' !== $post->post_mime_type) return $metadata; $original_filename = basename($post->guid); $dir = wp_get_upload_dir()['basedir']; $size = getimagesize("$dir/$original_filename"); if(empty($size[0]) && empty($size[1])) return $metadata; // manually set thumbnail meta which i upload manually to uploads dir $thumbname = str_replace('.webp', '-350x100.webp', $original_filename); return array( 'width' => $size[0], 'height' => $size[1], 'file' => $original_filename, 'original_image' => $original_filename, 'sizes' => array( 'thumbnail' => array( 'file' => $thumbname, 'width' => '350', 'height' => '100', 'mime-type' => 'image/webp' ) ) ); }, 10, 3);
Questions and Comments are Welcome