WordPressのエクスポート・インポートだけでも、記事やメディアファイルは移行することが出来ますが、テーマやプラグインの情報はインポートされない、結果、中途半端なサイトの再現ということになります。
ここでは、外部のサーバーからローカル環境の「MAMP」に「All-in-One WP Migration」を使ってサイトを移動する方法を解説していきます。
無料版でやるので難しい点もありますが、何とか移動できたのでやってみたいと思います。
目次
「All-in-One WP Migration」を使用して完全移行
移行するにあたっての確認事項
移行元と移行先のWordPressとPHPのバージョンを揃えておく
WordPressとPHPのバージョンを確認するには、左サイドの一番上にあるダッシュボードから「サイトヘルススタータス」で「サイトヘルス画面」を開くと見ることが出来る。
情報タブをクリックします。
現在のテーマには使用している「テーマとそのバージョン」、サーバーには「PHP」と「アップロード上限ファイルサイズ」「PHP POSTサイズ上限」、データベースには「データベースのユーザー名」が記述されていますがパスワードはありません。
ここでバージョン等を確認して合わせて置くようにします。
メディア処理にはアップロードできるサイズ等が書いてありますが、多分少ないので後で変更する必要が出てくると思います。
All-in-One WP Migrationを使ってエクスポートする
実はバックアップを使っても同じようなファイルが作成されます。ただ、有料版になるとエクスポートを選択すると、色んなエクスポート先を選ぶことができるようですが、無料版なので「ファイル」しか選べません。
それとエクスポートでは「高度なオプション」からエクスポートするファイルを選択できる機能もあるのですが、全てチェックなしでやるので、これはバックアップと同じことになるのです。
ここでは、エクスポートを使ってみます。
無料版でエクスポート先を選択できるのは「ファイル」のみ
高度なオプションは全てチェックなし。この状態で、エクスポート先として「ファイル」をクリックするとエクスポートが始まる。
最後に以下の様に「ダウンロード」と「閉じる」ボタンが表示される。この時点でファイルはサーバーにあるWordPress内のwp-content/ai1wm-backups/ 内に「.wpress」の拡張子が付いたファイルとしてバックアプファイルも保存されることになります。
ダウンロードを選択すると、そのファイルを自分のPCにもダウンロードすることができます。ここではローカルにダウンロードしたいのでダウンロードをクリックします。
画像も全て入っているのでインターネット環境によっては時間がかるかもしれません。
ここではサイズが重要になってくるので上図にある「サイズ:913MB」というのを頭に入れて置く必要があります。
移行先では最大アップロードファイルサイズに注意する必要があります。
ダウンロードしたファイルインポートする
当然ですが、移行する先のMAMPのWordPressにも「All-in-One WP Migration」をインストールする必要があります。
移行先のMAMPのWordPressからインポートを選択します。
デフォルトでは最大ファイルサイズが32MBになっていると思います。先程バックアップを取ったときのサイズが913MBなので全く足らないということになります。
最大アップロードファイルサイズを変更するには「php.ini」ファイルを編集する必要があります。
MAMPの最初のディレクトリにある「bin」から辿っていきます。phpのバージョンを確認して、それを選択する必要があります。
デフォルトでこのようになっていると思います。上のインポート画面にサイズが表示されているのがこれになります。
余裕を見て、これを「2000M」に変更しました。自分のインポートするファイルサイズに合わせて下さい。
編集が済んだらMAMPを再起動、WordPressへのアクセスも更新する必要があります。
下のように最大アップロードファイルサイズが:2GBになっていると思います。
これでインポートはローカル環境にダウンロードしたファイルをドロップするので、スムーズに素早く以下の画面までまったく問題無く実行されます。最後の以下の画面になります。
パーマリンク構造を保存するをクリックすると「ログイン」画面になります。または完了ボタンをクリックするとダッシュボードが表示されるが、パーマリンク設定をしようとすると同じく「ログイン」画面に切り替わります。
MAMPでのログインパスワードのリセット方法
最後に「完了」をクリックすると、一応バックアップデータのインポートは完了となりまが、このログインがMAMPの場合は非常に問題があります。
ログインには移動する前の元サイトのユーザー名とパスワードを入力する必要があるとあったのでそれを入れたが拒否されました。メールでのパスワードのリセットも拒否されました。
「エラー: そのユーザー名またはメールアドレスのアカウントは存在しません。」こんな状態になりまったくのお手上げ状態になったのです。
多分私のパスワード管理が悪かったのだと思うのですが、ちゃんとしていれば問題無いのかもしれません。
そこで直接データベースからパスワードをリセットする方法をやってみました。
以下の[インポートされたdb]は、新しく移動したデータベース名が左サイドにあるので分かると思います。
MAMPから[WebStart][tools][phpMyAdmin][wordpress]これを展開すると[wp_users]が出てきます。それをクリックすると以下のように表示されます。
ここにユーザー名とパスワードが書いてあるのですが、パスワードは暗号化されているので、コピーしても使えません。左にある編集ボタンで記述し直しリセットした形にします。
編集ボタンをクリックすると以下のように表示され、user_passがパスワードになるが右側には暗号化されているテキストが表示されているので、これを削除して新しいパスワードを入れる(暗号化するので忘れないようにメモをする)、user_loginがログイン名になる。これは表示のまま使える。
最後の暗号化するために「varchar」のところで「MD5」を選択して、下の方にある「実行」を押します。
何でMD5かよくわかりませんがサイトに書いてあったとうりにしました。
上で設定し直した、ユーザー名とパスワードを使ってログインすると、無事ログインできる。
最後にパーマリンクの更新を実行します
WordPress管理画面から「設定→パーマリンク」を選択。
パーマリンク設定画面を開きます。
パーマリンク設定画面の最下部にある「変更を保存」を2回クリックします。すみません、意味が私にはわかりません。あるサイトに書いてあったとうりにしています。
こちらは、移行後のリンク切れを防ぐために、必ずやっておくべき手順になるということです。
サイトを確認したら無事、再現されましたが問題もありました
トップページにWarningと出ているのです。
警告:30行目の/Applications/MAMP/htdocs/wordpress/wp-content/themes/ystandard/header.phpのタイプnullの値で配列オフセットにアクセスしようとしています。
と警告が出ていますが、この部分を調べたら、自分がphpファイルに追加したスクリプトだったので外したら問題が解決しました。このように色んな問題が起こる可能性がありますが、概ね移動再現が出来たので良しとすることにしました。