M's Web Design produced by k.toma

WordPressにwebp適用時のSquooshを使った設定方法3つの手順【プラグインなし】

  wordpress

自分用の覚書です。

ずっとやろうやろうと思って先延ばしていたWEB画像の最適化の一つのwebp化。
Google先生からも推奨されているし、導入しているサイトも多くなってきているので、今更ながら時代について行こうと思います。

WordPressにプラグインなしでwebp画像を導入してみた時の手順3つを紹介します。

 

【注意】画像はWordpressのメディアへはアップせず、FTPで直接サーバにアップし参照するサイト構成に有効です。

1..htaccessにwebpの読み込み方法追記

WordPressドキュメントルートの.htaccessファイルの最後に以下追記

#webp対応
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{REQUEST_FILENAME} (.*)\.(jpe?g|png)$
RewriteCond %{REQUEST_FILENAME}\.webp -f
RewriteCond %{QUERY_STRING} !type=original
RewriteRule (.+)\.(jpe?g|png)$ %{REQUEST_URI}.webp [T=image/webp,L]
</IfModule>
<IfModule mod_headers.c>
<FilesMatch "\.(jpe?g|png)$">
Header append Vary Accept
</FilesMatch>
</IfModule>
AddType image/webp .webp

【意味】jpg / jpeg / png 画像のURLに対して、.webpの画像ファイルがあれば優先的にそっちを読み込む。

よって、アップロード先のフォルダには元の画像とwebpの拡張子がついた画像を用意しておく必要があります。

また、aaa.jpg に対して用意するwebpのファイル名はaaa.jpg.webpというフォーマットになります。aaa.webpでは読み込んでもらえません。

2.画像ファイルのwebp化(Squoosh & コマンドライン)

オンラインツールなどで一括にwebp化もいいと思います。が、私の場合は一括コマンドラインが楽なのでそちらの手順を紹介。

参考:https://liginc.co.jp/586028

 

2-1. Squooshでwebp化にしたい対象の画像1つをアップして、適宜調整
2-2. Editのコードマークをクリックしてコピー

2-3. コマンドラインでコピーしたスクリプトを実行

$ npm i -g @squoosh/cli
$ cd GoToTargetDirectory/
$ npx @squoosh/cli --webp '{"quality":60,"target_size":0,"target_PSNR":0,"method":4,"sns_strength":50,"filter_strength":60,"filter_sharpness":0,"filter_type":1,"partitions":0,"segments":4,"pass":1,"show_compressed":0,"preprocessing":0,"autofilter":0,"partition_limit":0,"alpha_compression":1,"alpha_filtering":1,"alpha_quality":100,"lossless":0,"exact":0,"image_hint":0,"emulate_jpeg_size":0,"thread_level":0,"low_memory":0,"near_lossless":100,"use_delta_palette":0,"use_sharp_yuv":0}' *.jpeg *.jpg *.png 

1行目:squooshのコマンドラインツールをダウンロードします。
2行目:webp化したい画像が格納されているフォルダに移動
3行目:Squooshのサイトで調整しコピーしたコードを実行 最後の引数はすべてのpng / jpeg /jpg画像を一括webp化しています。

3. ファイル名を修正

面倒なのですが、一つずつwebp化した画像の.webp拡張子前に元画像の拡張子を追加
(一括ファイルリネームツールなど適宜利用してください。)

 

aaa.png をwebp化しaaa.webpが生成されたら、そのwebp画像をaaa.png.webpとリネームする。ということです。
これをしないとサーバ側で読み込まれません。(1.での.htaccessの追記参照)

 


以上です。

これでサーバ側へ元画像があるフォルダにwebp化した画像をFTPでアップしておわり!

特にリンク先を再修正する必要がないので楽ですね。

では!