ブロックエディタでの非同期メタデータ生成時にサムネイルがWebP変換されない(v5.21)
-
いつもプラグインをご活用させていただいております。Plus WebP or AVIF(v5.21)を利用中に再現性のある不具合を発見しましたのでご報告いたします。
■ 症状
ブロックエディタに画像を貼り付けてアップロードすると、メイン画像はWebPに変換されるが、各サムネイルサイズ(thumbnail, medium, medium_large等)はPNG/JPEGのまま変換されない。ファイル名の衝突が一切ない状態でも、ほぼ毎回この症状が発生する。■ 原因(class-pluswebp.php generate_webp内)
ブロックエディタのクライアントサイドアップロード処理では、wp_generate_attachment_metadataフィルターが1回のアップロードにつき2回発火します。1回目:アップロード直後。$metadata[‘sizes’]はまだ空配列。この時点でgenerate_webp()が実行され、メインファイルの変換には成功し、107行目のin_array判定を通過した後、151-157行目でpost_mime_typeが image/webp に更新されます。
2回目:数秒後、コア側の非同期サブサイズ生成が完了したタイミングで再度発火。この時点でmetadata[‘sizes’]には実際のサムネイルファイル(png等)が入っていますが、107行目の
$mime_type = get_post_mime_type( $attachment_id );
if ( in_array( $mime_type, $pluswebp_settings[‘types’] ) ) {
がDB上の現在のpost_mime_type(既にimage/webpに更新済み)を見てしまうため、この条件がfalseとなり、変換処理ブロック全体(107〜214行目)がスキップされます。結果として、非同期生成されたサムネイルは変換されないまま最終的なメタデータとして確定してしまいます。■ 再現手順
- ブロックエディタで画像(png)を新規に貼り付ける
- アップロード完了後、記事のsrcsetを確認する
- フルサイズ画像はimage.webpになっているが、各サイズ(-150×150等)はpngのまま
ご確認のほどよろしくお願いいたします。
You must be logged in to reply to this topic.