ワードプレスに画像をアップロードすると、なぜだか拡張子が勝手に変更されて困ってしまったことありませんか?
対象の方
当記事は、以下のような方を対象にしています。
- 画像をアップロードすると拡張子が勝手に変更されて、未定義となってしまう。
- 拡張子がPNGからJPGに変更されている。
- 画像圧縮にEWWW Image Optimizerプラグインを使用している。
標題のような現象に悩まされている方は、ぜひ以降の記事を読んでみてください。
チェックポイント!
さて、今回の問題を解決するには以下の重要なチェックポイントがあります。前述したように、ワードプレスにEWWW Image Optimizerプラグインを使っていない方は対象外です。あらかじめご了承ください。このプラグインを使っている場合は以下のチェックポイントを確認してみてください。
- 明示的に画像変換のオプションを指定していないか
- “コンバージョンリンクを非表示”オプションにチェックがはいっているか
これらをまずこれをチェックしてください。
対策1:明示的に画像変換するオプションを指定していないか
EWWW Image Optimizerは最適な画像形式でアップロードできるように画像の自動変換機能を有しています。当然そのような場合は、拡張子が変更になります。JPG→PNG、PNG→JPG、GIF→PNGといった3つの自動変換ができます。これは、下記の画像に示した設定の変換タブのいづれかにチェックがあるかどうかで確認します。
対策2:”コンバージョンリンクを非表示”オプションにチェックがはいっているか
もうひとつ「コンバージョンリンクを非表示」にチェックが入っていない場合にも、自動変換されて勝手に拡張子が変更されてしまいます。
この設定は、下記の図のように変換タブの中にあります。
番外編:それでもなおらない場合再初期化する
「明示的にも変換をしないようになっている」、かつ「コンバージョンリンクを非表示にもチェックがはいっている」のに、それでも症状を発生する場合があります。
当方が確認したEWWW Image optimizerのバージョンは5.3.2。このプラグインをインアクティブ(非活性化)にすると症状はでないのでまちがいなくこのプラグインが原因です。
それで発見したのが、以前のバージョンの設定が影響して表面上正しく設定されていても内部的に正しくリセットされていないんではないかということ。ただ、EWWW Image optimizerには初期設定に戻すというようなオプションはないので、以下のようにphpMyAdminを使ってデータベースの設定を直接消すことにしました。。
ewww各テーブルを削除
以下の関連テーブルを削除します。phpMyAdminのSQLを使って以下のコマンドを発行すればOK.
DROP TABLE ` wp_ewwwio_queue`, `wp_ewwwio_images`;
オプションレコードを削除
これも以下のコマンドをSQLで発行すればOKです。
delete from `wp_options` where `option_name` like '%ewww%'; delete from `wp_options` where `option_name` like 'ewww%';
まとめ
いや、なかなか盲点でした。設定項目を見直しても間違いはなく、EWWW Image optimizerプラグインの初期設定に戻すことが今回の不具合の原因解消になりました。