Wordpressのリビジョンをプラグインなしでデータベースを操作して削除する際に気を付けたいこと
ダメ、ゼッタイ。
上記記事(2011年7月更新)の方法は、2016年6月現在の最新版、Wordpress4.x.x系統では使えません。
何が起こる?
上記記事の最も肝心な部分はこれです。
DELETE FROM wp_posts WHERE post_status = 'inherit' ;
現時点でこれをするとどうなるか(というか、どうなったか)?
メディアファイルに登録された画像の情報が消えます。あぼんします。
あぼーん。
画像の情報(post_typeのカラムが'attachment'(添付ファイル)になっているレコード)はpost_statusが'inherit'(継承)なんですねぇ。リビジョン(過去の記事履歴)だけじゃないんですねぇ、'inherit'は。
という訳で、メディアファイルに登録された画像の情報が消えます。画像ファイル自体はアップロードフォルダに置かれたままなので、直接URLを指定して記事本文中などに配置していれば正常に表示されます。
しかしながら、アイキャッチ画像としてpost_idと紐づけられていた情報は消えるので、アイキャッチ画像は全滅します。
また繰り返しになりますが、メディアファイルからは一切画像を見ることが出来なくなります。
復旧法①:バックアップからデータベース復旧
データベースをいじくる前はバックアップを取れ、そして何が起ころうともお前の自己責任!と口を酸っぱくしょっぱく甘辛くして言われたことでしょうから、当然あるはずのバックアップを利用してデータベースを元通りにします。
復旧法②:手動で再登録
不幸にもバックアップが無い場合には、こちらの記事で紹介されている「Add from server」などのプラグインを利用して気長に気ままに登録し直しましょう。心を無にすれば、数百件のポチポチも耐えうるはず。
回避策
不要なリビジョン情報が蓄積していくのが嫌でデータベースをお手軽にキレイにしたいのなら、プラグインを使うのが良いでしょう。
検索すればすぐに見つかるはず。こちらなどいかがでしょうか?
もし失敗しても、自分を責めて暗い気分にならなくて済みます。
データベースをいじるなら
いや、どうしてもMySQLを利用してリビジョンを消さなければならない理由があるという場合には、
DELETE FROM wp_posts WHERE post_status = 'inherit' AND post_type = 'revision';
とかやると幸せになれるかもしれません。もちろん、幸も不幸も自己責任でお願いします。