WordPressの過去記事をSQL文を使って一気に削除する方法

WordPressで過去の記事を一気に消したいなあ…と思った時にはプラグインを使う方法がありますが、結構時間がかかるし、時間がかかりすぎてタイムアウトになったり…。

あー、どうしたらいいんだ!とお悩みの皆さんお待たせしました~。

MyPhpAdminが使えれば投稿した記事はSQL文を投げるだけですっきり消すことが出来ますよ。

投稿した記事や関連のデータが納められているテーブルは wp_postswp_postmetaの2つのテーブルです。

まずはwp_postsテーブルからデータを消します。

例えば、「2017年1月1日以前のデータを消す」場合、以下のようなSQL文になります。

DELETE FROM wp_posts WHERE `post_date` < '2017-01-01 00:00:00’

これで2017年1月1日より前に投稿されたデータは削除されましたので、テーブルの中身を見てみます。

IDでソートして一番数字が小さいものを探します。探したらそのIDをメモします。

次にもう一つのwp_postmetaテーブルからのデータ削除です。こちらのテーブルは日付がないため、先ほどメモしたIDを使います。

wp_postsテーブルではそのIDより小さいデータは消してしまってないので、wp_postmetaテーブルでもそのIDより小さいデータを消します。

メモしたIDが12345の場合は以下のとおりです。

DELETE FROM wp_postmeta WHERE post_id < 12345;

以上で過去データの削除は完了です。

 

SQLを工夫することで、もっと違う条件で削除することもできますが、ここから削除されると復元できませんので、慎重に。

またくれぐれも自己責任で!削除前にはデータベースやテーブルのバックアップもお忘れなく。