WordPressのローカル環境に本番環境のデータを持ってくる

前回、WordPressのローカル環境を構築しました。

前回の記事:WordPressのローカル環境構築ツールLocal by Flywheelが便利すぎる!

今のままでは全くの初期状態なので、本番と同期させたいのですが……、
結構自力といいますか、git pull して npm i ターンッ! で終わったりしないようです。

今回は、本番のデータをローカルに持ってくるためにやったことをまとめておきます。

ちなみに、PCはMac、サーバーはスタードメインの無料サーバー、WordPressのローカル環境構築はLocal by Flywheelを利用しています。

本番とローカルの差分確認

まず、本番とローカルの差分を確認してみました。

打ったコマンドについて

打ったコマンドは以下のとおりです。

$ diff -rq ローカルサイトのパス 本番サイトのパス

ローカルサイトのパスは、Local by Flywheelを使っていて、保存先を変えていない場合は、下記のようになっているはずです。

~/Local\ Sites/ローカルサイトの名前/app/public/

本番サイトのパスは、サーバーにアクセスして、ルートフォルダ以下のものを全てローカルにダウンロードしてきたものを保存した場所になります。

コマンドについて補足しておくと、
-r オプションは、サブディレクトリを再帰的に比較、
-q オプションは、ファイルに差異があるかどうかだけを比較し、同一の場合出力しない、というものになります。

差分結果について

差分は思っていたよりもずっと少なかったです。
検出できないものやダウンロードできていないファイルなどがあるのでしょうか……。

とりあえず、ちゃんと比較できたということにすると、結果は以下のとおり。

◆ 本番にしかないファイル

  • /favicon.ico
  • /wp-content/languages/plugins
  • /wp-content/languages/themes
  • /wp-content/plugins/akismet
  • /wp-content/plugins/contact-form-7
  • /wp-content/plugins/hello.php
  • /wp-content/themes/twentyfifteen
  • /wp-content/uploads/画像ファイル

基本的には、手動でインストールしたテーマとプラグイン、ファビコンと記事に使った画像のみですね。

◆ ローカルにしかないファイル

  • /local-phpinfo.php

php情報がずらっと表示されるページでした。

◆ 差分のあったファイル

  • /.htaccess
  • /license.txt
  • /readme.html
  • /wp-config-sample.php
  • /wp-config.php
  • /wp-includes/images/crystal/license.txt
  • /wp-includes/js/codemirror/csslint.js
  • /wp-includes/js/dist/blocks.js
  • /wp-includes/js/dist/date.js
  • /wp-includes/js/jquery/jquery-migrate.js
  • /wp-includes/version.php

差分を見ていきましたが、基本的にはこのまま(同一のものにしない)でよさそうです。

本番のファイルをローカルにコピー

差分を確認したところ、ローカルにないプラグインとテーマ、アップロードした画像(+ファビコン)を本番からコピーしてきて、ローカルに入れれば良さそうです。
下記のファイル(フォルダ)になりそうですね。

  • /favicon.ico
  • /wp-content/languages/plugins/
  • /wp-content/languages/themes/
  • /wp-content/plugins/
  • /wp-content/themes/
  • /wp-content/uploads/

ローカルサイトのパスは、Local by Flywheelを使っていて、保存先を変えていない場合は、下記の場所ですね。

~/Local\ Sites/ローカルサイトの名前/app/public/

テーマとプラグインの有効化

ローカルにコピーしただけでは変わらないので、WordPressのダッシュボードにログインして、テーマとプラグインを有効化します。

記事や固定ページなどのインポートとエクスポート

記事や固定ページのデータはデータベースに保存されているものなので、ファイルをコピーしてもローカルには保存されません。
sqlコマンドは使わず、WordPressのエクスポート・インポート機能を使って、データを入れたいと思います。

まず、本番のWordPressのダッシュボードにログインし、「ツール > エクスポート 」ページから、「エクスポートファイルをダウンロード」します。

続いて、ローカルのWordPressのダッシュボードにログインし、「ツール > インポート 」ページに移動します。
「 WordPress > 今すぐインストール 」でインポーターをインポートし(ややこしい)、「インポーターの実行」をクリックします。
「WordPress のインポート」ページに遷移するので、「ファイル選択」ボタンから、先ほどエクスポートしたxmlファイルを選択し、「ファイルをアップロードしてインポート」をクリックします。

ウィジェットの変更

ウィジェットの変更は反映されていなかったので、ローカルのウィジェットも変更します。
ここは手動で設定するしかなさそうです。

確認

ローカルサイトを確認してみると、ちゃんと本番と同様の状態になっていました。
これにて完了です!

さいごに

しかしこれ、投稿するといちいちインポート・エクスポートしなければいけない感じなのでしょうか……?
もっと簡単に同期できる方法、調べてみようと思います。