【ロリポップ】ファイル数上限対策|サムネ自動生成制御で画像ファイル減

前回の記事では、ロリポップのファイル数上限(50万個)に達してしまい、WordPress更新や画像アップロードができなくなった問題とその対処法をお伝えしました。

当ブログの記事:【ロリポップ】ワードプレス更新・画像アップロードエラー解決法|50万ファイル上限

キャッシュ削除や不要ファイルの整理である程度改善できましたが、長期的な対策として更なる改善方法を探ることにしました。

今回はWordPressのファイル数問題の原因のひとつであるサムネイル自動生成の仕組みに着目し、これを効率的に制御する方法を紹介します。

私のCocoonテーマ環境で実際に試して効果があった方法ですが、あくまで個人的な体験として参考にしてください。

この設定変更は基本的にはファイル数の問題を抱えているサイト向けです。通常のサイト運用では必ずしも必要ない対策ですのでファイル数上限に達していない場合は無理に実施する必要はありません。
この記事では子テーマのfunctions.phpファイルを編集します。必ずバックアップを取ってから実施してください。結果については自己責任でお願いします。

WordPressのサムネイル自動生成の仕組み

WordPressには知らないうちにファイル数が増える仕組みがあります。これがファイル数増加の原因のひとつでした。

1枚の画像をアップロードすると以下のようなファイルが自動生成されます。

  • 1枚の画像から5〜9個のファイルが自動生成される
    • オリジナル画像: example.jpg
    • サムネイル: example-150×150.jpg
    • 中サイズ: example-300×200.jpg
    • 大サイズ: example-1024×683.jpg
    • その他のサイズ: example-768×512.jpg など
  • Cocoonなどのテーマはさらに独自のサイズを追加
    • ブログカード用: example-160×90.jpg
    • アイキャッチ用: example-320×180.jpg
    • その他のレイアウト用サイズ

つまり、1枚の画像をアップロードしただけで最大9個ものファイルが生成されていたのです。

これが数年間のブログ運営で積み重なると、知らないうちにファイル数の上限に達してしまうことは容易に想像できます。

この問題に対処するため、まずは簡単にできる設定から試してみました。

簡単にできるサムネイル制御の基本設定

最初に試したのは、WordPressのダッシュボードからできる設定変更です。

  1. 管理画面で「設定」→「メディア」に移動
  2. 以下のように設定を変更:
    • サムネイル:幅150px、高さ150px(そのまま)
    • 中サイズの最大幅:0px、最大高:0px
    • 大サイズの最大幅:0px、最大高:0px
  3. 「変更を保存」をクリック

この設定だけでも新しくアップロードする画像については中サイズや大サイズの自動生成を抑制できますが効果は限定的でした。テーマ固有のサイズ(Cocoonの場合はブログカード用など)はこの設定では制御できないためです。

より効果的な対策として、子テーマのfunctions.phpを編集する方法を試すことにしました。

子テーマのfunctions.phpでサムネイル生成を抑制する方法

子テーマのfunctions.phpを編集することで、より効果的にサムネイル生成をコントロールできます。

この方法でWordPress標準のサイズとテーマ固有のサイズを無効化し、必要最小限のサイズだけを定義することができます。

  1. WordPress管理画面で「外観」→「テーマエディター」を選択
  2. 必ず子テーマを選択(私の場合は「Cocoon Child」)※親テーマだと更新時に消えます
  3. 右側のファイル一覧から「functions.php」を選択
  4. ファイルの末尾に以下のコードを追加:
/**
 * サムネイル画像の生成を制限する設定
 * ロリポップのファイル数制限対策
 */

// WordPress標準のサムネイル生成を制限
function disable_default_image_sizes($sizes) {
    // 不要なサイズを無効化
    unset($sizes['medium']);      // 中サイズを無効化
    unset($sizes['medium_large']); // 中大サイズを無効化
    unset($sizes['large']);       // 大サイズを無効化
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'disable_default_image_sizes');

// Cocoon特有のサムネイル生成を制限
function disable_cocoon_thumbnails() {
    // Cocoonテーマ固有のサイズを無効化
    if (defined('THUMB120')) {
        remove_image_size(THUMB120);
    }
    if (defined('THUMB160')) {
        remove_image_size(THUMB160);
    }
    if (function_exists('get_vertical_card_2_thumbnail_size')) {
        remove_image_size(get_vertical_card_2_thumbnail_size());
        remove_image_size(get_vertical_card_3_thumbnail_size());
        remove_image_size(get_tile_card_2_thumbnail_size());
        remove_image_size(get_tile_card_3_thumbnail_size());
    }
}
add_action('after_setup_theme', 'disable_cocoon_thumbnails', 11);

// 必要最小限のサムネイルサイズだけを設定
function setup_optimal_image_sizes() {
    // メインのサムネイル - 16:9比率(私の使用する画像サイズに最適)
    add_image_size('main_thumb', 400, 225, true);
    
    // 汎用サムネイル - アスペクト比を維持
    add_image_size('flexible_thumb', 400, 0, false);
}
add_action('after_setup_theme', 'setup_optimal_image_sizes');

// サイト全体で同じサムネイルサイズを使用
function use_optimal_thumbnail_size($size) {
    return 'main_thumb';
}

// 各表示箇所で同じサイズを使用するよう設定
add_filter('get_entry_card_thumbnail_size', 'use_optimal_thumbnail_size');
add_filter('get_new_entries_thumbnail_size', 'use_optimal_thumbnail_size');
add_filter('post_thumbnail_size', 'use_optimal_thumbnail_size');
  1. 「ファイルを更新」ボタンをクリック
このコードは標準のサイズとCocoonテーマ特有のサイズを無効化し、必要最小限の2つのサイズだけを定義しています。
ここでは16:9比率(400×225px)を例として使用していますが、ご自分のサイトで主に使用している画像比率に合わせて調整するとよいでしょう。例えば4:3比率なら400×300pxなどに変更します。
これにより1枚の画像から生成されるファイル数を大幅に削減できます。

この設定を行うことで新しくアップロードする画像のサムネイル生成数を大幅に減らすことができました。

ただし、この設定は「今後アップロードする画像」に対して有効であり、既存の画像については適用されません。そこで次のステップとして既存の画像サムネイルも最適化することにしました。

既存画像のサムネイルを最適化する手順

ここまでの設定は今後アップロードする画像に適用されますが、既存の画像のサムネイルも整理するために「Regenerate Thumbnails」プラグインを使いました。

  1. 「プラグイン」→「新規追加」から「Regenerate Thumbnails」をインストール・有効化
  2. 「ツール」→「Regenerate Thumbnails」に移動
  3. 以下のオプションにチェックを入れる
    • ✅「すでに正しいサイズで存在するサムネイルの再生成をしない」
    • ✅「サーバー容量の解放のため、現在登録されていないサイズのサムネイルを削除します」
  4. 「添付ファイルすべてからサムネイルを再生成」をクリック

Regenerate Thumbnailsの画面

この処理は画像数によっては相当な時間がかかることがあります。私の場合は約1500件の画像に対して30分程度かかりました。

処理が完了したらロリポップの管理画面でファイル数の変化を確認しましょう。

実際に得られた効果と感想

ロリポップディスク使用量 サムネ自動生成対策前

Before: 486,424ファイル

ロリポップディスク使用量 サムネ自動生成対策後

After: 472,846ファイル

削減率は予想していたよりも低めでしたが、これはおそらく「Converter for Media」プラグインを使用していることも影響しています。

このプラグインは画像を最新のWebP形式に変換して表示速度を向上させる便利なツールですが、同時にファイル数も増加させます。

  • 通常の画像(JPG/PNG)ごとにWebP版も生成される
  • 例:画像1枚とそのサムネイル2枚の場合、通常なら3ファイルのところ、WebP版も含めると計6ファイルに

つまり、サムネイル削減の効果が半減してしまうのです。WebP変換を使用していない場合は今回の対策でさらに大きな削減効果(おそらく5〜10%程度)が期待できます。

長期的なメンテナンスのポイント

今回の問題の再発を防ぐため、いくつかのメンテナンス習慣を取り入れました。

定期的なメンテナンスの習慣

  • キャッシュ系プラグインでキャッシュを定期的にクリア
  • ロリポップの管理画面でファイル数をチェック
  • Media Cleanerなどのプラグインで未使用画像を整理
  • データベース最適化プラグインでリビジョンなどを整理

画像アップロード時の習慣

  • 画像サイズを統一(私の場合は800×450px)
  • 画像ファイルはできれば100KB以下に最適化
  • ファイル名は英数字とハイフンのみを使用(サーバー互換性向上のため)

まとめ

今回の問題を解決して学んだ重要なポイントは以下の3つです。

  1. WordPressの仕組みを理解する重要性:WordPressが1枚の画像から複数のサムネイルを自動生成する仕組みを理解することがファイル数問題への対処の第一歩でした。
  2. 必要最小限のサイズだけを使う:すべてのサイトに多数のサイズは必要ありません。2〜3種類の最適なサイズに絞ることでファイル数を大幅に削減しながらサイトのパフォーマンスを維持できます。
  3. 定期的なメンテナンスの重要性:ファイル数の定期チェックと不要ファイルの削除を習慣にすることで問題の早期発見・対処が可能になります。

「サムネイル自動生成を制御する」という対策は地味に見えるかもしれませんが、長期的なWordPress運用において非常に効果的です。特にロリポップのようなファイル数制限のあるサーバーでは重要な対策と言えるでしょう。

この記事が同様の問題を抱えている方の参考になれば幸いです。

WordPressやCocoonテーマのバージョンアップにより、ここで紹介したコードの一部調整が必要になる場合があります。大きなアップデート後は動作を確認することをおすすめします。

参考にさせていただいた記事・サイト

その他
ガガ
Author Profile

猫飼い歴30年以上の猫好き、生き物好きで、スポーツや読書、料理、調べものが趣味。
野球とサッカーは観戦するのもプレーするのも好きです。
料理は作るのも食べるのも好きですが甲殻類アレルギー持ちです。

ガガをフォローする
タイトルとURLをコピーしました