コンテンツにスキップ

WordPress で特定の投稿タイプの投稿を一括削除する方法

メインイメージ

WordPress で特定の投稿タイプの投稿を一括で削除する方法を説明します。 今回は 2 つの方法をご紹介します。

確認時のバージョン

  • WordPress 6.6.1
  • WP-CLI 2.11.0

A) 管理画面の一覧ページを使う方法

ひとつめは管理画面の投稿一覧ページを使う方法です。

  1. 管理画面にログインする
  2. 対象の投稿タイプの投稿一覧ページを開く
    • 投稿: サイドメニューの「投稿」をクリック
    • 固定ページ: サイドメニューの「固定ページ」をクリック
  3. 削除したい投稿のチェックボックスにチェックを入れる

    WordPress 管理画面 → 投稿: チェックボックス

  4. セレクトボックス「一括操作」で「ゴミ箱へ移動」を選択して「適用」ボタンをクリック

    WordPress 管理画面 → 投稿: ゴミ箱へ移動

    WordPress 管理画面 → 投稿: 2 件の投稿をゴミ箱へ移動しました。

デフォルトで用意されている「固定ページ」や「投稿」のような、「ゴミ箱機能」をサポートしている投稿タイプの場合は、投稿データがすぐに削除されるのではなくいったんゴミ箱に移動します。

ゴミ箱に移動された投稿は 30 日間保管された後に自動的に削除されますが、すぐに削除したい場合は手動での削除も可能です。

WordPress 管理画面 → 投稿: 「ゴミ箱」リンクをクリック

WordPress 管理画面 → 投稿 → ゴミ箱: 「ゴミ箱を空にする」

Note

ゴミ箱からも削除されたデータは物理的にデータベース内からも削除されるので、復元できません。

元に戻す可能性のある投稿はゴミ箱に移動したり削除したりするのではなく下書き状態で残しておくようにしてください。

B) WP-CLI を使う方法

WordPress のコマンドラインツール WP-CLI を使う方法です。 こちらはターミナルでの操作に慣れた方向けです。

例えば、デフォルトの投稿タイプ「投稿」の投稿を全件削除するには次のコマンドを実行すれば OK です。

# post の投稿を全件ゴミ箱に移動する:
wp post list --post_type='post' --format=csv --field=ID \
| xargs -I {} wp post delete {}
  • wp post list: 投稿データを出力する
  • wp post delete: 指定された ID の投稿データを削除する

ゴミ箱を経由せずに強制削除したいときは wp post delete コマンドに --force オプションをつければ OK です。

# post の投稿を(ゴミ箱を経由せずに)強制削除する:
wp post list --post_type='post' --format=csv --field=ID \
| xargs -I {} wp post delete --force {}

Note

このコマンドは少しでも間違って使うと深刻なデータロスが発生するリスクがあるため、事前にバックアップを取ってから作業を行うことをおすすめします。

おまけ: 上書きされたテンプレートパーツを全件削除する

テンプレートパーツはデータベース内では wp_template_part という名前の投稿タイプとして管理されています。 そのため、 --post_typewp_template_part を指定すれば保存(上書き)されたテンプレートパーツを全件一括削除することができます。

wp post list --post_type='wp_template_part' --format=csv --field=ID \
| xargs -I {} wp post delete --force {}

出力サンプル:

Success: Trashed post 301.
Success: Trashed post 116.
Success: Trashed post 1.

WordPress リファレンス

関連ページ