WordPressの不要メディアを一括整理する方法|wp-cliで検出&削除

WordPressを長く運営していると、メディアライブラリがどんどん膨れ上がっていきます。
過去に使っていたけれど記事から外した画像や、アップロードだけして未使用のまま残っているファイル…。

こうした不要メディアはディスク容量を圧迫するだけでなく、バックアップサイズまで大きくしてしまいます。
私もバックアップの転送が遅くて調べてみたら「未使用画像が何百枚も残っていた」という経験がありました。

そこで役立つのが wp-cli でのメディア検出&削除です。

未使用メディアを検出する

wp-cli にはメディアを一覧する wp media list コマンドがあります。
このとき --status=inherit を指定すると「投稿に紐づいていないメディア」を洗い出せます。

wp media list --status=inherit --format=ids
  • --status=inherit → 親投稿を持たない添付ファイル(孤立した画像など)
  • --format=ids → IDだけを出力するので削除に使いやすい

このコマンドを実行すると、未使用のメディアID一覧が取得できます。

不要メディアを削除する

検出したIDをそのまま wp media delete に渡せば削除できます。

wp media delete $(wp media list --status=inherit --format=ids)
  • ゴミ箱を経由せず完全削除したい場合は --force を追加
wp media delete $(wp media list --status=inherit --format=ids) --force

私は最初に実行したとき、一気に数千件の画像が削除されて驚きました。
「こんなに使ってない画像あったのか…」と実感できる瞬間です。

注意点

未使用メディアを削除する前に、いくつか気をつけるポイントがあります。

  • 必ずバックアップを取る → 誤削除すると復元が大変
  • カスタムフィールドやテーマ内で使われている画像に注意 → 投稿に直接紐づいていなくても実際には使っているケースあり
  • テスト環境で試すのが安心 → 本番サイトでいきなり実行しない

私は一度、記事には使っていないけれど「固定ページの背景画像」として呼び出していたファイルを削除してしまったことがあります…。
本当に不要かどうかは慎重に判断してください。

まとめ

  • wp media list --status=inherit で未使用メディアを検出
  • wp media delete でまとめて削除可能
  • サイトの軽量化やバックアップ時間の短縮に効果的
  • ただし誤削除防止のため、必ずバックアップとテストを

WordPressを長期運用している方にとって、メディア整理は「見えない負荷」を減らす大事な作業です。
一度試してみると、メディアライブラリがスッキリして気持ちよく運用できますよ。

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント