wp_postsのguidがデモサイトのまま。エクスポート→インポートで失敗。

制作をする時、本番環境以外を使いますよね。レビューなんかにももちろん使う。そして、OK後に本番環境へ移行させるわけですが皆さんどうしているんでしょうか。

もっぱら私はwordpressの機能であるエクスポート→インポートを行います。

昔は知りませんが今の(wordpress2.7.1)機能で十分なわけです。
手間があるとしたら「リンク」のデータが移らないくらいでしょうか。それも、「リンク」自体使わないか、使っても少しだったので気にするレベルではなかったです。
それよりも、インポートを使うと、画像データをダウンロードして持ってきてくれるという機能が非常に便利で手放せません。しかもサムネイル画像までも持ってきてくれました。

しかし最近、躓きました。

次のような箇所があったのですが

<?php
$posts = get_posts('post_type=page&post_parent=3');
if (posts) {
  foreach ($posts as $child) {
  <a href="<?php echo $post->guid; ?>">詳細はコチラ</a>
 }
}
?>

がデモサイトのままでした。ブラウザのキャッシュかとも思いましたが違いました。あまり触れないできたデータベースを直接のぞいてみると、見つけました!

テーブル:wp_posts
フィールド:guid

がデモサイトのままでした。

私の理想としては、「データベース」と「WP本体」のコードは触れないことでしたがそうも言えない状況になってましたので、直接SQLで対処しました。

UPDATE wp_posts
SET guid = REPLACE(guid,'http://demo.example.com/','http://www.example.com/')
WHERE guid LIKE '%http://demo.example.com/%'

これでなんとか問題はなくなりました。が、一番手っ取り早い移行(移転)の方法はどうすればいいんでしょうね。

コメントをどうぞ