
皆さん、こんにちは、レイフェンゴです。今日はWordPressのバックエンドで画像をアップロードする際の最適化方法をいくつか紹介します。以前、レイフェンゴがWordPressのバックエンドで画像をアップロードする際、特に複数の画像を同時にアップロードする場合にエラーが発生することがあり、データベースの負荷が高くなりがちでした。以下では、WordPressの画像アップロード速度を最適化し、データベースクエリを削減する方法について説明します。
WordPressでアップロードする画像のファイル名を「1」などにしないでください。そうするとデータベースのクエリが増加します:
画像の名前付けを面倒に感じて、適当に1.jpgと名付ける人もいます。そうすると、WordPressの管理画面で画像をアップロードする際に、画像1.jpgが既に存在するかどうかをチェックし、自動的に1-2.jpgにリネームします。もし1-2.jpgも存在すれば、さらに自動リネームを繰り返し、データベースへのクエリ負荷が大きくなります。
どうしても面倒な場合は、以下の方法を試してください。
WordPress 中国語名の画像を自動リネーム / SQLクエリを削減:
状況1:Windowsサーバーを使用している場合、中国語名の画像をアップロードするとエラーが発生し、„アップロード中にエラーが発生しました。後でもう一度お試しください。“プラグインを使って自動的にピンインや英字に変換することもできますが、画像アップロード時のパフォーマンスに影響を与えます。ここでは、アップロード時に自動的にリネームするコードを追加する方法を紹介します。
ケース2:WordPressにアップロードする画像のファイル名が重複しすぎると、WordPressはデータベースをクエリして画像をリネームする必要があります。画像が多すぎると、データベースがダウンする可能性もあります。
解決方法は簡単で、以下のコードをfunctions.phpに追加します:
add_filter('wp_handle_upload_prefilter', 'custom_upload_filter' );
function custom_upload_filter( $file ){
$info = pathinfo($file['name']);
$ext = $info['extension'];
$filedate = date('YmdHis').rand(10,99);
$file['name'] = $filedate.'.'.$ext;
return $file;
}原理は、アップロード時刻に基づいて画像をリネームすることです。例:2019092010182810.jpeg
コードの追加方法がわからない場合は、以下を参照してください:functions.phpファイルにコードを安全に追加する方法:Code Snippets
もちろん、このプラグインを直接使用することもできます:WordPress画像自動リネームプラグイン Unique Rename Image File Upload
WordPressでアップロードするJPG形式画像を自動圧縮:
画像を圧縮すると、帯域幅を節約し、サイトの読み込み速度を向上させることができます。WordPressにはデフォルトで画像圧縮機能が用意されており、圧縮率を設定できます。ただし、JPEG形式の画像のみ対応していることに注意してください。
以下のコードをfunctions.phpに追加します:
add_filter( 'jpeg_quality', create_function( '', 'return 90;' ) );
コード中の90が圧縮率です。必要に応じて調整してください。
その他の画像圧縮が必要な場合は、「EWWW Image Optimizer「プラグインを使用できます。JPG、PNG、さらにはGIFをサポートしています。また、圧縮時に画像形式を変換する機能も提供しており、例えばWebP形式への変換や、JPGとPNGの相互変換が可能です。

同様の画像圧縮プラグインは他にも多数ありますので、使いやすいものを選んでインストールしてください。
WordPressでアップロードする画像のサムネイルを削減:
WordPressは画像をアップロードする際に、自動的に3種類のサイズのサムネイルを生成します。仮想ホストやメモリの少ないVPSではパフォーマンスに影響を与える可能性があるため、サムネイルの生成を無効にするか、1種類だけ生成するように設定できます。
WordPressの管理画面で「設定」→「メディア」→「画像サイズ」に移動し、不要なサムネイルサイズを0に設定します。

本当にサムネイルが不要な場合は、完全に無効にしましょう。
以下のコードをfunctions.phpに追加します:
//彻底禁止WordPress缩略图 add_filter( 'add_image_size', create_function( '', 'return 1;' ) );
関連記事:WordPress 5.2.1の自動サムネイルトリミング機能を無効にする
WordPressで使用されていないサムネイルをクリーンアップ:
上記でサムネイルを無効にしましたが、以前生成されたサムネイル画像は容量を占有します。手動で削除するのは大変なので、プラグインを利用しましょう。
「Delete not used image「は、使用されていないサムネイル画像を自動的に検索するプラグインです。
1. Delete not used image を使用する前に、バックアップを促すメッセージが表示されます(バックアップを推奨します)。「options」内の「Backup system」/「Create backup folder」でバックアップするか、他の方法でバックアップしてください。
2. 「options」内の「_ Show」で「original」を設定し、直接クリックします。これで元の画像が失われないことを保証できます。
3. 「Images」をクリックするとサムネイル画像の検索が開始され、「Delete all」で全て削除します。

サムネイルファイルが多すぎる場合、処理に時間がかかり、「Fetching server…」の状態が続くことがあります。辛抱強く待ちましょう。
上記の最適化設定により、管理画面での画像アップロードがかなり速くなったはずです。これでデータベースのクエリ過多によるダウンを心配せずに、安心して画像をアップロードできます。
その他の関連記事:
ウェブサイトの画像読み込みが遅い場合の対処法_サイト画像を高速化する3つの方法
WordPressサイトの画像数、形式、サイズを統計する方法