「本番環境」と「開発環境」など、記事のデータを移行したいけどドメインが違う…って時のお話です。
基本的にはWordPress の引越し(WordPress Codex日本語版)でも紹介されている「DATABASE SEARCH AND REPLACE SCRIPT IN PHP」というPHPスクリプトを使うことが多いのですが…
「とりあえず開発環境にサクッと」という場合にはこのスクリプトをわざわざ配置して、URL叩いていろいろ入力して…という作業は面倒です…
なので今回はWP-CLIを使ってコマンドラインでサクッとDBのインポート・エクスポートとドメインの置換を済ませる方法(を覚える為)のメモです。
目次
今回使うコマンド
さて、いきなりですが今回登場するコマンド一覧です。(自分用メモ)
wp db export [ファイル名]
wp db import [ファイル名]
wp search-replace [元ドメイン] [置換後ドメイン]
ドメインが違うWordPressサイトへデータを持っていく手順
ドメインが違うサイトに記事データや設定などをごっそり持っていくとなると、真っ先に浮かぶのが移行元のDBをエクスポートして、移行先でインポートする。
…という手順ですが、移行元ドメインの情報を持ったまま移行先にインポートしてしまうと、画像アドレスが元ドメインを指したままになっていたり、設定関連で整合性が取れなくなってエラーになったり…
…と、いろいろと問題ありありなので、「移行元ドメインを移行先ドメインに置換する」という作業が必要になります。
そんなときによくお世話になる「DATABASE SEARCH AND REPLACE SCRIPT IN PHP」というPHPスクリプトがあるのですが…
ファイルをwp-config.phpのある場所に設置する必要があって、なんかちょっと面倒なので、できればコマンドラインでサクッとやってしまいたい。
特に開発環境など「いくら失敗しても取り返しが付く」環境ならなおさらサクッと済ませたいのです!
ということで「WP-CLI」というコマンドラインツールでサクッとWordPressのDBデータのインポートとドメインの置換をする方法を覚えたので、そのコマンドとかのメモです。
WP-CLIとは?
細かい話とインストール方法などは今回は割愛しますが、WP-CLIはWordPressのいろいろな操作がコマンドで実行できるようになるツールです。
黒い画面にコマンド打ってWordPressの設定とかガンガン変更できたり、なんならWordPress本体のインストールとかも可能です。すごい。
インストール方法など詳しくは以下を御覧ください。
WP-CLI利用にあたってはインストール作業が必要になるのですが、嬉しいことに「VCCW」や「Local by Flywheel」といったローカル環境を構築するツールでは最初からWP-CLIが使える状態になっています。
WP-CLIを使ってDBのエクスポート・インポート・置換をする手順
DBのエクスポート
まずはコマンドラインのカレントディレクトリをwordpressがインストールされているディレクトリに移動します。(wp-config.phpがあるディレクトリ)
$ wp db export [ファイル名]
(例:wp db export wordpress_20160901.sql
)
上記コマンドでDBの内容をファイルにエクスポートします。
拡張子はとりあえず「.sql」にしておきます。
エクスポートが完了すれば「Success」が表示され、ファイルが出来上がります。
レンタルサーバー上のWordPressなど、簡単にコマンドラインが使えない環境であればphpMyAdminを使ってエクスポートします。(僕の場合エクスポートはphpMyAdminを使うパターンが多いです。)
DBにインポート
まずは先ほどエクスポートしておいた.sqlファイルを、インポート先環境に配置します。
インポート先でもコマンドラインのカレントディレクトリをwordpressがインストールされているディレクトリに移動します。
$ wp db import [エクスポートしたファイルが置いてあるパス]
上記コマンドを実行し「Success」が表示されればDBのインポートが完了です。
ドメインを置換
引き続きインポート先の環境で下記コマンドを実行します
$ wp search-replace [移行元ドメイン] [移行先ドメイン]
例として、「https://yosiakatsuki.net」の本番データを開発環境「http://yosiakatsuki.dev」に持ってくるとします。
コマンドは次のようになります。
$ wp search-replace 'https://yosiakatsuki.net' 'http://yosiakatsuki.dev'
コマンドを実行すると、データ量によっては少し時間がかかりますので待ちます。
処理が終わると、どのテーブルに対して何件置換したかが一覧で表示されます。
これでドメインの置換も完了です!
まとめ
いつもターミナルの履歴からコマンド実行していて、コマンドをはっきり覚えてないので、案件切り替わる度に「あれ?wp db search-replaceだっけ?wp replaceだっけ???」と毎回調べてるのでメモがてらエントリにしました。
mysqldumpでもいいかもしれないですけど、WP-CLIの方がパスワードの入力とかいらないのでお手軽ですよね!(たぶん)
興味があれば是非チャレンジしてみてください。