Liner Note

情報(ユーザー中心デザイン・ユーザビリティ)と技術(ウェブプログラミング・ウェブサービス)についてのメモ書き

要約:あるWordPressブログを、サーバの移転やローカル鯖への同期など別の場所にコピーする方法についての簡単なまとめ

実は前に一回書いたのだけど、その後書き足すことが増えたのでまとめなおし。なお、前提としてUTF-8のブログをUTF-8(つまりそのまま)でコピーするとします。

まず、WordPressでは標準でXML(WXR形式)でのインポート・エクスポート機能を実装していますが、現状ではデメリットが大きくて使わない方が得策です。なぜかというと‥

  • 添付ファイルの個別URLがおかしくなる(guidとmime-typeが引き継がれない)
  • 記事IDを1からふり直すので、IDを中心にURLを設計していた場合はURLが変わってしまう
  • 記事の抜粋が消えてしまう
  • エクスポートしたファイルが大きい場合は(ファイル自体を分割しない限り)サーバの処理時間制限にひっかかって、インポートできない場合がある

というわけです。念のためnightlyビルドも試してみましたが、2007/9/12現在ではまだ直っていません。

なので、元サーバ(以下、サーバA)のMySQLAdmin*1 経由でエクスポート→移行先サーバ(以下、サーバB)のMySQLAdmin経由でインポートすることにします。MySQLAdminは、さくらインターネットやXREAなど並のレン鯖屋さんなら使えるはずです。

事前準備

まず、WordPress側で文字化けが発生する事があるため、power source* - XREAにUTF8設置時の文字化け 解決編に従って、以下のようにコードを追加。

ファイルパス: wp-includes/wp-db.phpの78行目あたり

  1. if ( !empty($this->charset) && version_compare(mysql_get_server_info(), '4.1.0', '>=') )
  2.              $this->query("SET NAMES '$this->charset'");
  3.        
  4.         mysql_query("SET NAMES utf8", $this->dbh);
  5.         $this->select($dbname);
  6.     }

サーバAから書き出し(エクスポート)

次にサーバAのMySQLAdminに文字コードを utf-8 にしてログイン(さくらは確かEUC-JPが初期状態だったはず)。

右フレームのタブにある「エクスポート」を選択して、出てきた画面でWordPressに関係ある全てのテーブルを選択。『「DROP TABLE」を追加』と『完全な INSERT 文を作成する』の項目にチェックを入れたら、「実行」ボタンを押して保存します。

書き出したファイルの調整

書き出したファイルをUTF-8が扱えるテキストエディタで開いて、以下の部分のURLをサーバBのWordPress設置予定URLに修正します。これをしない限り、サーバAにリダイレクトされるので注意。

  1. INSERT INTO `note_options` (`option_id`, `blog_id`, `option_name`, `option_can_override`, `option_type`, `option_value`, `option_width`, `option_height`, `option_description`, `option_admin_level`, `autoload`) VALUES (1, 0, 'siteurl', 'Y', 1, 'http://localhost/blog/', 20, 8, 'WordPress web address', 1, 'yes');
  2. (中略)
  3. INSERT INTO `note_options` (`option_id`, `blog_id`, `option_name`, `option_can_override`, `option_type`, `option_value`, `option_width`, `option_height`, `option_description`, `option_admin_level`, `autoload`) VALUES (40, 0, 'home', 'Y', 1, 'http://localhost/blog/', 20, 8, '', 1, 'yes');

書き出した設定によっては、以下のように略記されていることがあります。その場合は、siteurlhomeおよび1,040,0などを手がかりに検索を行いましょう。

  1. (1, 0, 'siteurl', 'http://localhost/note/', 'yes'),
  2. (中略)
  3. (40, 0, 'home', 'http://localhost/note/', 'yes'),

サーバBへ書き入れ(インポート)

終わったらサーバBのMySQLAdminへ。WordPressのテーブルを選んで、また右フレームのタブから「インポート」を選択。さきほど編集したファイルをインポートしたら終わりです。

同期の必要が無くても、慣れればそれほど難しくないので、バックアップ代わりとして定期的にやっておくのもいいかもしれません。

  1. MySQLを操作するフロントエンドアプリケーション [戻る]

この記事のURI
この記事のURI(リンク用フォーマット)

読者の皆さんの反応サイト内コメントの更新情報(RSSフィード)

読者のコメント

0

コメント書き込みフォームに移動する

この記事を受けて書かれた他サイトの記事

0

トラックバック受信用URI

この記事に言及したサイトをこちらに掲載する仕組みをトラックバックと言います。トラックバック受信方針に沿っていないもの以外は削除させていただいています。

コメント書き込みフォーム

  • すべての項目の入力は任意です、匿名でコメントいただくこともできます
  • メールアドレスはウェブ上で公開したり、連絡以外で使うことはありません
  • コメントを公開したくないが、作者に連絡を取りたい場合は メールで連絡してください
  • 本文中にHTMLコードは使用できません(URLはそのままお書きください)