「Search Regex」プラグインで「一致項目を削除」を選択して実行したらデータが全部消えてしまいましたのでご報告します。
ちなみに今回の記事で扱うSearch Regexのバージョンは3.0.6でした。
「Search Regex」で一致項目を削除を実行したらデータが全部消えた
こちらの「一致項目を削除」なのですが一致結果の記事を削除します。になっているのでこれを実行したらたとえば上の例では「岸田政権」というテキストが文中に含まれている記事だけ削除されるはずなのですが、なぜか全ての記事が消えてしまいました。
しかもこちら原因がわかりませんでした。「Search Regex」に関しては公式ドキュメントもありませんしソースも読めないのでどうしようもありませんでした。一致した記事だけ削除されると思っていたのでデータベースのバックアップもとっていなかったので復元もできませんでした。まああまり力を入れていないブログだったのでまだよかったですが今回の件に関してはサードパーティプラグインの恐ろしさを知りました。
Search Regexを使うときはバックアップ
Search Regexのよくわからない機能を使うときはバックアップをとることは大事だということが今回の失敗でわかりました。Search Regexはテキストの置換に関しては優秀です。しかし今回の「一致項目の削除」のバグは想定外でした。(実際にはバグかどうかもわからないのですがおそらくバグだろうと判断しています)
wp_postsテーブルをバックアップする場合は、phpmyadminにログインして該当のテーブルをエクスポートしておきます。わたしは実際に試してみたのですが、インポートするときに同じ名前のwp_postsテーブルがあった場合はエラーがおきてインポートできませんでした。ですので一旦元のwp_postsテーブルを削除してそのあとにsqlファイルをインポートすると成功しました。
まとめ: Search Regexの一致項目を削除を使うと全ての記事が消えるので使わない
今回は「Search Regex」の「一致項目を削除」を使ってしまうとすべての記事が消えるという体験だったのですが、たぶんこれを経験した人はなかなかいないのではないかと思います。一致項目の削除を行なうと全ての記事が消えるのでくれぐれも使わないようにしましょう。
このミス(実際は私的にはミスではなくバグ)がおきた場合データベースのバックアップをとっていなかったとしたらもはや打つ手はありません。すべて水の泡というわけです。ただネットの情報だとレンタルサーバー会社がバックアップをとっている可能性があり問いあわせを行うと復旧できる可能性もあるそうです。しかし、この場合は有償での復旧になるケースがほとんどのようです。
やはりデータベースに変更を加えるときはバックアップが大切なんだということを今回の失敗で認識しました。
全ての記事が消えてしまったあとの事後処理
全ての記事が消えてしまったので事後処理を行う必要があります。わたしの場合は記事を大量に投稿していましたが、クリーンアップには多少時間がかかりました。これより下に実際にやったことを書きますが備忘録的に書いている意味が強いので参考程度にとどめておくことをおすすめします。
画像の削除
まず記事は消えてしまったのですがこの時点では記事に使用としていた画像は削除されていません。こちらはftpソフトでwp-content/uploadsにアップロードされている画像を削除しただけではデータベースに投稿されたデータ(画像のデータ)は消えないので、管理画面から削除する必要があります。
私の場合は「Media Cleaner」というプラグインを使ってメディアを削除しました。
Media Cleaner: Clean your WordPress! – WordPress plugin | WordPress.org
データベースのクリーンアップ
phpmyadminでwp_postsテーブルにpost_typeがwmpc-trashという不要な行があったのでこれを削除しました。wmpc-trashがなんなのかはわからなかったのですがおそらくさきほどの「Media Cleaner」プラグインを使って削除した画像だと思われます。以下のSQLを使って削除しました。
DELETE FROM `wp_posts` WHERE post_type = 'wmpc-trash';
これでwp_postsテーブルはあらかた綺麗になりましたが、wp_postmetaテーブルもありこちらは構造が複雑でわからないのでデータベースクリーンアッププラグイン「WP-Sweep」を使いました。
WP-Sweep – WordPress plugin | WordPress.org
このプラグインを使うと孤立したpost_metaテーブルのデータを削除することができます。
事後処理おわり
これで使ってない画像やデータベース行の削除が終わりました。WordPressで間違って記事を削除してしまうとこのように事後処理もやらないといけないので大変です。今回はSearch Regexのバグ?でとんでもないめにあってしまいました。(とほほ…)
ちなみにグーグルにインデックスされている記事が大量に消えた場合、グーグルからのサイトの評価にどのような影響が出るかまでは考えていません。おそらくただじゃすまないでしょうね。サーチコンソールでインデックスされたページを削除できますが、私の場合は記事の量が膨大すぎてやっていません。
みなさんもお気をつけください。
コメント