何かと評判の悪いWordPressの標準インポート機能ですが、基本の手順通りにやれば、容量の大きいサイトでも無事にデータ移行できます。
何回やっても上手くいかず、有料ツールを衝動買いする前に、参考にして頂ければ幸いです。
(私も隅々まで知り尽くしている訳ではないので、あくまで体験談として)
インポート前にやってはいけないこと
WordPressのインポートを成功させるコツは、インポート作業の前に、ファイルをアップロードしたり、オプションの設定を行ったりしないことです。
レンタルサーバーで、WordPressの新規インストールを行い、アカウント開設に成功したら、そのままの、まっさらな状態でインポート作業に入ります。
以下、インポート前にやってはいけないこと。
→ 一括変換はインポート完了後、データベース用のReplace&Searchを使って置換する。
・インポート前に、メディアファイルやプラグインをwp-content/uploadsにアップロードする
・インポート前に、テスト記事を投稿したり、タグやカテゴリーを新規作成する
・インポート前に、プラグインやテーマテンプレートなどのオプションを設定する
・インポート前に、WordPressの細々した設定を行う
・バックグラウンドでサーバーに負荷のかかる作業をする(ファイル転送や別サイトの編集など)
WordPressのインポート機能は、「まっさらな状態にデータを注入する」ことを標準にしており(サーバー上でXMLをPHPに変換して、データベースに格納する)、インポート前に余計なデータが入っていると、サーバーの方で混乱して、データ変換や格納に失敗するそうです。
また、添付ファイルのインポートでは、前サイトのサーバーから自動的にファイルを取り込む作業がステルスで行われます。
その際、サーバーに大きな負荷がかかるので、途中で余計な作業をすると、サーバーがますます過負荷となって、失敗するとのこと。
英語のサイトに書いてあったので、理解不十分かもしれませんが、ともかく、「移転先のWordPressが真っ新な状態で移行作業を行う」のがポイントです。
基本の手順を守る
まずコピーしたいサイトのエクスポートファイルを準備します。何も考えずに「すべて」を選択。
記事数が多い場合は、カテゴリー別、もしくは、カスタム投稿タイプ別にエクスポートファイルを用意してもOK。
その際も、エクスポートファイルに、絶対に手を加えないこと。
XMLファイル上の、データの置換や編集はインポート失敗の元です。
添付ファイルの扱い方(アイキャッチ画像)
恐らく、皆さんがインポートに失敗する最大の原因は、『アイキャッチ画像が正常に取り込まれない』だと思います。
記事数や画像数が少なければ問題ないですが、記事、アイキャッチ画像ともに、数百、数千の規模になれば、失敗する確率も高まります。
数GB規模のサイトで、失敗した経験があるなら、有料プラグインを購入するのも一考です。重要なサイトなら尚更です。
私も数GB規模のサイトで、何度もエクスポート&インポートの経験がありますが、テキストやメタデータの移行はできても、アイキャッチ画像はかなりの確率でエラーが生じます。何がどう書き換わったのか、まったく異なるアイキャッチ画像が表示されたり、記事の中で一枚だけ画像が行方不明になったり。その度に、リンクチェックして、エラー修正して、画像を再アップロードしていては、時間がいくらあっても足りないので、そういうケースは、ちと高くついても、有料プラグインを使った方がいいと思います。
有名どころ(これもサーバー仕様によってバックアップファイルをインポートできないことがあるので、必ず試用のこと)
All-in-One WP Migration
https://ja.wordpress.org/plugins/all-in-one-wp-migration/
ともかく、WordPress標準のインポート機能を使う場合は、あれこれ考えず、基本通りに操作しましょう。
初心者が迷うのは、「添付ファイルをダウンロードしてインポートする」というオプションだと思います。
ネットで公開されている情報では、「チェックを外す」が推奨されていますが、初回のインポートは『添付ファイルをダウンロードしてインポートする』にチェックを入れます。
インポートを実行すると、お使いの環境によっては、ずらずらとエラーメッセージが出ると思います。
ここで焦って、ブラウザのタブを綴じたり、リロードしたり、他の項目をクリックしては絶対にダメ
エラーメッセージが出ても、5分ほど待って下さい。
「完了しました」というメッセージが出なくても、添付ファイルのインポートはステルス的に成功していることがあります。
心配な場合は、別のタブかウィンドウで「メディア」を開いてみて下さい。
順調にインポートが進行していれば、ずらずらとサムネイルが表示されます。
サムネイルのトップに、XMLファイルが表示されています。これが画像ファイルを引っ張ってきます。
ファイル数にもよりますが、最低でも10分ぐらい、手を加えずに待ちましょう。
途中でインポートに失敗する原因は、「エラーメッセージ」に驚いて、タブを閉じたり、画面をリロードすることです。
いったん、サムネイルのアイコンが豆腐化すると、簡単には戻せません。
メディアファイルだけインポートしようと試みても確実に失敗します。
メディア系のプラグインを使っても失敗することがあります。
添付ファイルのインポートに躓いたら、いったん、データテーブルを空にして、「WordPressインストール直後」の状態に戻します。
データテーブルは削除ではなく、『空』にすること。テーブルを削除すると、WordPressが正常に機能しなくなります。
また、旧サーバーから画像ファイルを引っ張ってくる際、新サーバーのFTP画面に表示されるまで、若干時間がかかります(リアルタイムではない)。
管理画面の「メディア」ではちゃんとサムネイルが作成され、インポートされている様子なのに、FTPでは何の反応もなし。
数分後に現れる ↓
FTP上にファイルがリアルタイムに現れないからといって、インポートに失敗したと早合点しないように。
それでもデータのインポートに失敗する
それでもインポートに失敗する場合は、データベースのインポートに切り替えます。(WordPressのXMLファイルは使わない)
基本のデータ(記事、カテゴリー、タグ、添付ファイル、カスタムフィールドなどのメタデータ)の移行に必要なファイルは次の通りです。
移行作業を確実にするには、面倒でも、個別にエクスポートしましょう。(万一エラーが生じた時、原因を追及しやすい)
wp_term (カテゴリーとタグのスラッグ、説明、ID)
wp_term_relationships(記事IDとカテゴリ&タグの関連づけ)
wp_term_meta(カテゴリーの並び順)
wp_term_taxonomy(カテゴリーとタグの説明文、ID)
コメントやリンクデータがある方は、wp_comments や wp_links など関連するデータも同じ手順でインポートします。
WordPressの基本設定やプラグインの設定を保存する wp_options に関しては、そのまま引き継ぎたい(ゴミごと)場合はインポートすればいいし、引越を機会にゴミデータとはおさらばしたい場合は、一から手動で設定し直します。
エクスポートしたSQLファイルをテキストエディタで開きます。
まず、データの最初に記述されたデータベース名を、新しいデータベース名に編集します。
テーブルの接頭辞を変更する場合、新しいテーブル名に修正します。
phpMyAdminにアクセスして、インポートしたいテーブルを削除します。
空ではなく削除です。既存のテーブルに、新しいテーブルを上書きすることはできません。
メニューの『インポート』から「ファイルを選択」でファイルを指定。
テーブル・データのインポートに成功したら、その他のSQLファイルについても、同じ作業を繰り返します。
インポート作業が終了したら、WordPressの管理画面に戻って、正常に動作するか確認します。
前サイトとまったく同じ内容が復元されていたら成功です。
SQLは正確なのに管理画面がおかしい
データのインポートに成功しているにもかかわらず、管理画面がフリーズして、表示がおかしくなる場合は、一度、カテゴリーやタグを作成してみて下さい。
「保存」と同時に、管理画面のフリーズが解除されて、きちんと表示されることがあります。
焦ってWordPressをリセットする前に、試してみて下さい。
投稿データのインポートが完了したら、画像ファイルの移行をFTPで確認
投稿のテキスト、カテゴリー、タグ、カスタムフィールドなどのメタデータ、アイキャッチ画像の移行が正常に完了したら、FTPを使って、wp-contents/uploads/ にアクセスし、その他の画像ファイルも全てインポートされているか確認します。
もし、いくつかの画像ファイル(もしくはフォルダ)が欠落している場合、手動でアップロードしてOKです。
繰り返しになりますが、画像ファイルの手動アップロードは、投稿データが完全にインポート→復元したのを確認してから行います。
万一、アイキャッチ画像などが欠落している場合、もしくは、ステルスで画像データの移行が進行している場合、手動で画像ファイルをサーバーに置くと、WordPressのインポート機能が勘違いして、 image-1.jpg image-2.jpg のように、画像をどんどん複製し、サーバー容量が膨れ上がることがあります。
画像の手動アップロードは、必ず投稿データの移行が完了してから!
テーマテンプレートやプラグインのインストールは一番最後に
投稿データ、画像、ともに揃ったら、一番最後にテーマテンプレートやプラグインのインストールを行います。
データのインポートが完了するまでは、あれこれインストールしたり、WordPressの設定をいじらないようにしましょう。
XMLファイルのアップロードでエラーが生じる場合
エクスポートしたXMLファイルを新しいWordPressにインポートする場合、データ容量が大きいと、アップロードでエラーが生じることがあります。
レンタルサーバーの管理パネルから php.ini を編集できる場合は、下記の数値を変更しましょう。
memory_limit > post_max_size > upload_max_filesize
> は、より数値を大きく、という意味です。
カスタム投稿を含むインポート
複数のカスタム投稿タイプを有する場合、インポート前にカスタム投稿の基本設定を行い、次いで、カスタム投稿のデータをインポートする方法と、先にカスタム投稿データのインポートを行い、後からカスタム投稿の基本設定をする方法と二種類ありますが、先にカスタム投稿の設定をする方が分かりやすいです。
ただ、あまりに投稿数が多いと、カスタム投稿のインポートで躓くケースもありますので(タクソノミーの表示がおかしくなる等)、一度、テストサイトで具合をみて、それから本番を実行した方がいいです。
データベースのSearch & Replace
WordPressのインポート機能(XMLファイル)を使って新規ドメインにデータを移した場合、投稿内のアドレスが旧ドメインのままになっていると思います。
こういうの↓
img src=”http://old-domain.com/wp-content/uploads/2017/01/45_59.jpg” alt=”WordPress インポート 画像ファイル” width=”273″ height=”210″ class=”alignnone size-full wp-image-42702″
他にも一括変換したい文字列があれば、データベースのSearch & Replace を使用します。
サーバーにアップロードして使用するタイプ。
DATABASE SEARCH AND REPLACE SCRIPT IN PHP
こちらに詳しい説明があります。
WordPress移行時にURLをSQLで直接一括置換はダメ! 「Search and Replace for WordPress Databases Script」を使おう
Search & Replace
プラグインを利用した一括置換。
phpMyAdminで直接SQLを走らせる方法もありますが、失敗すると取り返しがつかないので、Dry Run(お試し)のできるツールを使いましょう。
バックアップ・ファイルは圧縮形式で
サイト移行前にデータベースや画像ファイルなどのバックアップは必須ですが、プラグインを使ってバックアップ・ファイルを作成する時は、「圧縮ファイル」で抽出するものがおすすめです。(もしくはレンタルサーバーの提供するバックアップツールを使用。エックスサーバーの場合、サーバー上のデータを丸ごとエクスポートできます)
理由は、「○○.wbkup」みたいな、プラグイン独自のバックアップファイルの場合、新サイトでプラグインが動作しなかった場合、復元不能に陥るからです。
また、ファイルの中身を確認する際、独自ファイルは解凍のしようがありません。
「2010年10月の画像ファイル image10.jpg が必要」となっても、中身を見ることも、ファイルをばらすこともできないからです。
↓ こういうやつ
私が使った中では、『Updraft BackupPlus』が一番処理が早くて、ファイルの種類ごとに圧縮フォルダを作成してくれるので分かりやすいです。
オンラインストレージへのバックアップは有料オプションになりますが、無料のFTPでも十分使えます。
(エクスポート&インポートの際、FTPの作業時間が長くなるのが欠点)
最近では、Google Driveへのバックアップが無料で利用できるようになりました。
「theme」「plugin」「uploads」のように、項目毎に圧縮ファイルを作成してくれるので、ファイルの確認や復旧に便利。
独自ファイルでもいいから、ワンクリックでエクスポート&インポートしたい場合は、『All in one WP Migration』が最強。
無料版では容量制限がありますが、ファイル作成時にURLや文字列の置換もしてくれるので、ワンクリックでサイトの移行ができます。
新規ドメインにデータを移したい方、煩わしいのが苦手な方におすすめ。
それなりの値段はしますが、何日もかかって、インポート&エラー修復する手間を思えば、有意義な投資ではないでしょうか。
有償版の案内ページ。日本語の解説もあります。
https://servmask.com
シンプルにサイトの移行や複製を行いたい場合は、『Unlimited Extension』がおすすめ。
容量制限なし、複数のウェブサイトで使用可能、ライフタイム・ライセンス=69ドルです。
https://servmask.com/products/unlimited-extension
バックアップファイルの置き場所をFTPにするなら、FTP用のエクステンション=99ドル。
https://servmask.com/products/ftp-extension
その他、OneDrive、Google Drive、Drop Box、など、大手クラウドサービスと一体化したエクステンションもあります。
いずれも、99ドルなので、全自動で安全にバックアップ・ファイルを保存したいなら、もう30ドルプラスして、99ドルバージョンを購入した方が便利かもしれないですね。
インポートエラーに費やす時給に換算すれば、数日分です(´д`)
おわりに
WordPressは便利なツールですが、定期的にリフレッシュした方が、動きがよくなるのは確かです。
プラグインを使って丸ごとインポートなどもできますが、wp-options などに溜まったゴミ・データも一緒にインポートされるので、結局、大して変わりはないんですね。
それよりも、WordPressを新規インストールして、投稿(画像)データだけ、まるっと移動した方が、WordPressのリフレッシュにはよろしいかと。
しかし、肝心のインポート機能がぐだぐだなので(大規模サイトの場合)、悩ましいところです。
上級者なら、Import any XML or CSV File to WordPress あたりを使って、テキストと画像データだけ、効率よく移行できるのかもしれませんが、これも有料版でないと、まともに機能しないので、悩ましいです。