WordPressの投稿IDなどを手軽に変更できるプラグイン「Search and Replace」
WordPress でバックアップ時点以降に投稿した記事を手動復元する場合、投稿IDをどうやって元通りにするかが問題になりますが、これを簡単に出来るプラグイン「Search and Replace」を紹介します。
投稿IDだけでなく、タイトル・投稿内容・タグ・カテゴリの一括置換など、いろんな用途のデータベース検索・リプレースをしてくれる大変便利なプラグインです。
プラグインのダウンロードはこちらから。
または、ダッシュボードのプラグイン新規追加画面から「Search and Replace」を検索しても良いでしょう。
万が一の際に覚えておくと非常に便利なプラグインと思います。
使い方
※このプラグインは容赦なくデータベースの内容を書き換えるので、処理前にはバックアップを取っておき、意図しない結果になった場合は、確実にリカバリできる状態で使う事をオススメします。
インストール&有効化後は、ダッシュボードの「ツール」→「Search & Replace」から使います。
投稿ID(post_id)を変更するには、「ID」にチェックを入れ、「Search for」に現在の投稿ID、「Replaced with」に新しい投稿IDを入力し、「GO>」を押します。
たったこれだけであっけなく Post ID が変わってしまいます。
なお、全ての記事でそうだったわけではありませんが、一部、画像ファイルが添付されている投稿で、画像の紐付けとかアイキャッチ画像の設定が引き継がれないケースがあったような。
問題ない場合もあったので、一応、気にはした方がよいかもしれません。
他にも、投稿内容の content や、title、各種メタデータ、コメント、comments author、カテゴリやタグ、カテゴリの説明、ユーザIDなどの置換が可能で、それぞれ対象テーブルとフィールドが書かれているので、ある程度 WordPress 内部の知識があるならなかなか使えるのではないかと思います。
投稿IDのオートインクリメントはどうなるの?
今回の方法で「大きな番号の投稿ID」にした場合、Wordpress が採番する投稿IDとの衝突が心配でしたが、振った番号以降を自動的に使ってくれるようです。(Wordpress 3.8.1-ja で確認)
どこでそういう処理をやってくれているのかは分かりませんが、これを気にしなくてよいのは大変助かります。
余談(なんでこんなものが必要になったのか)
投稿IDを変更。なんて、何か怪しい事でもしてるんじゃ?と思われるかもですが、実は今朝、使っているVPSサーバのディスクレイテンシがまたしても跳ね上がり、そのままダウン。他に方法がなかったので仕方なく強制再起動したところ、「root fs をマウントできない」みたいな衝撃的なメッセージが…。
物理サーバなら多少はがんばろうかとも思う所ではありますが、VPSのGRUBをリモートからいじった経験はさすがになく、また、不測の事態の可能性も考慮すると、GRUBをいじる云々というアプローチでは復旧時間が読めない気がしたので、これは別サーバを建てた方が早かろう。と早々に判断。
バックアップからリカバリして、バックアップ後の差分記事はこの方法で復元した。という経緯があったのです。
実は、後から良く良く調べてみると、起動時のカーネル選択で旧バージョンを選ぶとか、VPSの管理画面から仮想光学メディアを入れられそうな予感がしたり…とかとか、他にも対策はあったっぽいのですが…。
今回は、早朝5時くらいに気がついて、ちょうどアクセスが少ない時間でしたし、いずれにしてもサーバーを移転したいと思っていたところなので、ちょうどよいタイミングだったかもしれません。
思わぬ所で全データ喪失というディザスタリカバリのテストが出来ましたし、これはこれでまぁ良かったのかも。