WordPressで記事を消す場合、投稿一覧から選択して削除するのは一般的ですが、消したい記事が大量にあると選択するのも面倒だし、動作環境によっては削除処理する記事が多すぎるとタイムアウトしてしまいます。
そこで、今回は大量の記事を一括削除する方法を3つご紹介します!
投稿一覧から削除する
1つ目は至ってシンプルです。
投稿一覧から削除を行うのですが、通常ページごとに表示する項目数は20件で設置されていますので、これでは一度に20件までしか削除できません。
そこで、1ページに表示する投稿数を増やしてから一括削除します。
表示オプションを使う
まず、投稿一覧画面の右上にある「表示オプション」をクリックします。
「ページ送り」項目の「ページごとに表示する項目数」を20から最大の「999」に変更します。
そして、「適用」ボタンを押下すると投稿画面の1ページに999件の投稿が表示されます。
あとは、削除したい記事を絞り込み、「一括操作」から「ゴミ箱へ移動」を選択して「適用」ボタンを押下します。
最後に、ゴミ箱を空にするのを忘れないでくださいね!
プラグインを使用して削除する
ここでは、「Bulk Delete」というプラグインをご紹介します。
記事のステータスやカテゴリ、タグなどから細かく絞り込みながら削除できますし、何日前までの記事を指定して削除することもできます。
有料版では削除スケジュールも設定できるようです。
Bulk Deleteプラグイン
今回は過去の記事を一括削除したいので、「Select the post statuses from which you want to delete posts」で「公開済み」を選択し、「Choose your filtering options」で「Only restrict to posts which are [older than] [90] days」をチェックして設定しました。
あと、その下にあるラジオボタンの「Move to Trash」がデフォルトで選択されたいるが、これだと、わざわざゴミ箱を空にしなくてはならないので、「Delete permanently」を選択しておきます。
最後に「Bulk Delete」ボタンを押下すると、90日前までの投稿の一括削除が完了です!
SQL文で削除する(MySQL)
ここまでのお話でも記事を一括削除するには十分なのですが、冒頭でも記述した通り、もっと大量に削除したい場合は記事の読み込みや削除の時間が長すぎて、タイムアウトしてしまいます。
そこで、データベースからSQL文で直接削除する方法をご紹介します!
特定の日付より古い記事を削除する
WordPressの記事をデータベースから直接削除する場合は、2つのテーブルのデータを削除する必要があります。
1つは「wp_posts」、これは記事本体ですね。
もう1つはwp_postsに紐付く「wp_postmeta」、記事のメタ情報になります。例えば、今年の記事だけ残し、昨年以前の記事を削除したい場合、以下のようなSQL文を実行します。
1 |
DELETE FROM wp_posts WHERE post_date < '2020-01-01 00:00:00' |
削除が完了したら、wp_postsテーブルのIDカラムを昇順でソートして、1番若い番号をメモしておきます。
次に、wp_postmetaテーブルの削除を行います。
削除するデータの条件として、post_idカラムに対して先程メモしたID以前の番号未満のものを指定します。
1 |
DELETE FROM wp_postmeta WHERE post_id < 12345 |
これで昨年までの記事の一括削除は完了です。数百件程度なら、WordPressの管理画面から削除する方法で問題ないですが、数万件になるとSQL文で削除した方が早いです。
コメント