WEB NOTE
WEB関連の備忘録

WordPressで画像のフルサイズが勝手にリサイズされる問題

WordPress

RECSIを更新しているとき、ある日を境にアップロードしたオリジナル画像が勝手に横幅、高さが2560pxを超えていたら自動でリサイズされるようになりました。
ギャラリーサイトを運営するうえで大きいサイズをアップロードできないのは困るので調べ解決したので、その方法を紹介します。

解決させるためのコード

以下のコードを functions.php に追加すると解決でします。

add_filter( 'big_image_size_threshold', '__return_false' );

おまけ – 何でリサイズされるの?

WordPressの大きな画像の扱い方は、ユーザーや開発者の間で常に話題になっています。

アップロードされる画像には、一般的に2つの種類があります。

画像編集アプリケーションで編集または作成された画像。
カメラから直接アップロードされた写真、または編集されていない写真です。
最初のケースでは、画像は通常「ウェブ対応」です。適切なサイズに縮小され、最適化されている場合があります。

2つ目のケースでは、通常、画像は必要以上に大きく、ウェブ用に最適化されていません。平均的な最新のスマートフォンで撮影した写真は、ファイルサイズが5MB以上になります。良質なカメラで撮った写真はもっと大きくなることがあります。

WordPress 5.3では、大きな画像を検出し、それらの「ウェブに最適化された最大サイズ」を生成することで、これらの画像を管理する新しい方法が導入されています。

これはどのように機能するのでしょうか?

新しい画像がアップロードされると、WordPress はその画像の高さや幅が big_image のしきい値を超えているかどうかをチェックすることで、それが「大きな」画像であるかどうかを検出します。デフォルトのしきい値は 2560px で、新しい big_image_size_threshold フィルタでフィルタリングできます。

画像の高さや幅がこのしきい値を超えている場合は縮小され、 しきい値が最大高さと最大幅の値として使われます。縮小された画像は利用可能な最大サイズとして使われます。

この場合、元の画像ファイルはアップロードディレクトリに保存され、その名前は画像メタ配列の別の配列キーである original_image に保存されます。元々アップロードされた画像のパスを常に取得できるようにするために、新しい関数 wp_get_original_image_path() が導入されました。

スケーリングを無効にする
スケーリングは big_image_size_threshold フィルタによって制御されます。フィルタのコールバックから false を返すと、このフィルタは無効になります。

スケーリングを無効にする

スケーリングは big_image_size_threshold フィルタによって制御されます。フィルタのコールバックから false を返すと、このフィルタは無効になります。

add_filter( 'big_image_size_threshold', '__return_false' );

こちらの文章は Introducing handling of big images in WordPress 5.3 の記事を翻訳したものです。