WordPressインポートでpost_idが変わった?

WordPressで作られたWebサイト(ホームページ)を別のサーバーへ移転する、いわゆるWordPressの引っ越しの方法は、いくつかあるのですが、[ホームページ引っ越しサービス]では、基本的には、

データベースのエクスポート&インポートと、ファイルのダウンロード&アップロード

で行っています。
この方法なら、全部丸ごと移転するので、新旧の違いも無いからです。

WordPressのエクスポート&インポートツールを使った移転

ただ、たとえば、

  • 移転のついでに、WordPressテーマやプラグインを替えてリニューアルするので、余計なデータを移転先のデータベースに持って行きたくない
  • WordPressのバージョンが古くて、丸ごと移転しても新サーバーで動かせない、また、今のサーバーでWordPressのバージョンアップをすることもできない

といったケースでは、

WordPressの「XMLファイル」エクスポート&インポートツールと、その他の方法を組み合わせて

行っています。

もちろん、これまで、それで特に問題はありませんでした。

WordPressインポートで、post_idが変わってしまった

ところが先日、「XMLファイル」をインポートしたところ、一部の投稿記事で、「post_id」(投稿の固有ID)が、移転元と違っている(IDが振り直されている)現象がありました。

しかも、パーマリンク設定が「カスタム構造」で、「/%post_id%」を使っているため、「post_id」の違いはURLの違いとなり、これでは、同じ個別投稿ページなのに新旧でURLが異なってしまいますので、問題です。

post_id振り直し問題解決のためにしたこと

同様の現象が他所でも発生していないか、ネットで調べたところ、やはりいくつか出てきたのですが、その解決方法については、「それはちょっと・・・」というのがほとんどでしたので、

  • 通常のインポートでは、post_idも、そのまま保持される
  • post_idは、一意なので、振り直しされるとすれば、重複が見つかったときだけ
  • 移転元のWordPressは、正常に動いているので、少なくとも有効なデータのpost_idは、問題ないはず

と考え、下記の手順を試してみました。

  1. 移転先のデータベースを、WordPressインストール直後のものに戻す
    (移転先の部屋を空っぽにする)
  2. 移転元でエクスポートする際、ステータスは「公開済み」を選択
    (使っていないものは、引越し用トラックに乗せない)
  3. 移転先でインポート

これで、「post_id」は、無事、移転元と移転先で、一致しました。

最初うまくいかなかった原因が、

  • 移転先に余計なものがあったせいなのか(無かったと思うのですが・・・)
  • 「XMLファイル」に、「自動下書き」と「下書き」のデータが入っていたせいなのか(これらの「post_id」が重複していたわけではないのですが・・・)
  • その他、何か問題があったのか

は、わかりませんが、いずれにしましても、WordPressの「XMLファイル」エクスポート&インポート機ツールを使っても、ちゃんと移転できる、ということを改めて確認できた出来事でした。