WordPress の uploads ディレクトリを整理する

なにはともあれこうなのであります。 このブログの画像置き場、あれよあれよという間に 50GB に達しようかという勢い。 ですけど、まさかにそげにスクリーンショットをアップロードしているでもなく、いやマイクラ日記を始めてからやたらとアップロードしたはしたですけど、こんなになるほどではないはず。

uploads ディレクトリを見ますと年月で更にディレクトリ分けされており、それらのなかにはアップロードした画像(オリジナル)の他、サムネイルがやたらめったら生成されており、なんならその合計はオリジナルを遥かに超す程。 そもそも幅 2560px の png24 ファイルであるスクリーンショットだもんで、なにしろ元画像がデカすぎ問題っていうのがあります。 ですのでこういうふうにしたいっていうのが具体的になりました

  • 元画像をアップロード時にリサイズしたい
  • サムネイルは一切作りたくない

まず、元画像については、 Imsanity というプラグインで対処しました。設定で今後アップロードされる画像ファイルのリサイズをよろしくやってくれる他、「一括画像リサイズ」という既存のアップロード画像についてもやってくれちゃう親切設計なこのプラグイン。 いいぜ、すばらしいぜ。 ただ、元画像が 7,500 枚くらいありましたんでそれなりに時間はかかります。

これで元画像については完了。

次に自動生成されたサムネイル。 既に生成されたサムネイルを何とかすることで当座しのげます。

DNUI というプラグインを利用しました。 deprecated だそうで後継アプリを使えとのことなんですが勝手がわからずこっちを利用。 同機能別プラグインもあるらしいですけどすみませんこれで。

退避フォルダをいちおうは作成し、元画像(original)だけは無視するようにし、1ページあたり 100 枚ずつ処理するように設定し、開始。 これ、データベースに登録されている画像データを検索しつつ、使われていない画像を削除する、というツールでありまして、となりますとデータベースの整理もやってくれちゃうわけでして、尋常じゃない負荷をデータベースにかけてくれちゃうので深夜帯にやるべき作業かとは思いますけど、なにしろ粛々と作業します。

こっちは夜っぴいてやりまして完了。 退避フォルダの中身を確認した上で削除し、実際に uploads ディレクトリの中をいちいち探してデータベースに紐付けられていない自動生成サムネイルを手作業で削除したりしつつ、ここまでの作業は終わりました。 結果は、

1/9 ほどになりました。 効果てきめんすぎて怖いくらいだし、いよいよ WordPress って余計なことをしてくれちゃうよねっていう話でもあり、サムネイルの自動生成についてはあれこれ設定できるようにしてほしいなぁって願うばかりでもありました。

さて、元画像のリサイズは既に対処できたんですけど、アップロード後のサムネイル自動生成はどうしようって話です。

とりあえずはおなじみのメディア設定。 サムネイルは作りません、っていう設定に。

次に WordPress がここ以外で勝手に生成してくれちゃうものについては、options.php で設定しておきます。

medium_large_size_w を 0 で設定することで、幅 768px のサムネイル自動生成が抑制されます。

また、image_default_size を full に設定することで、貼り付けた元画像を表示に使うようにします。

ただ、これでも他にサムネイルを作ってくれちゃうヒトがいまして、それはテーマ。

このブログでは子テーマを使っていますので、そっちの functions.php に(親テーマでの)セットアップ後にフックしてサムネイル生成処理をキャンセルさせました。

たぶんこれでいいと思います。 1年位したらまた uploads ディレクトリを覗いてみるとしましょう。