こんにちは、エンジニアの@gorou_178です。このエントリは、「WordPress Advent Calendar 2016」の14日目の記事兼、イノベーター・ジャパン Advent Calendar 2016の14日目の記事です。
今年7月に、WordCamp Kansai 2016に登壇して、以下の発表をしてきました。
スケーラブルにする場合、自動的にデプロイできるべきなのですが、スライドの最後に掲げている3つの課題がありました。
- WordPressコアのDBマイグレーション
- WordPressプラグインのDBマイグレーション
- 言語ファイルのダウンロード
これらをWP-CLIで解決できたのでまとめようと思います。
課題1: WordPressコアのDBマイグレーション
wp core update-db
を実行するだけ。
手順としては以下です。
wp core update
でコアのアップデートwp core update-db
でDBのマイグレーション
とても簡単でした。
課題2: WordPressプラグインのDBマイグレーション
ここは、グレーゾーンなのですが、ちゃんと作成されたプラグインであれば wp plugin update プラグイン名
で更新とともにマイグレーションしてくれます。
よく言われている「公式ディレクトリにあり、2年以内に更新されているもの」であれば問題ないと思います。*1
wp plugin update プラグイン名
だと最新版にアップデートされるため、事前にどのバージョンにアップデートされるのか知りたい場合は、 --dry-run
オプションを付けると、現在のバージョンと更新バージョンの確認ができるのでとても便利ですよ。
課題3: 言語ファイルのダウンロード
wp core language
でインストール・有効化・更新が行えます。
wp core language install ja --activate
で日本語言語ファイルをインストールして有効化までしてくれます。wp core language activate ja
で有効化します。
wp core language update
でインストールされているコアの言語ファイル・テーマ・プラグイン全ての言語ファイルの更新を行ってくれます。個別指定はできなさそうなので全て一括更新になります。プラグインの更新同様に、 --dry-run
オプションがあるので、事前に確認すると良いと思います。
自動デプロイ
上のスライドにも書いてますが、コア・プラグインをcomposerで管理できるWordPress.Skeletonを利用します。
composerのscriptsでインストール後にWordPressコアのDBマイグレーションと言語ファイルのダウンロード・有効化を実行します。
"scripts": { "post-package-install": "Installer::postPackageInstall", "post-package-update": "Installer::postPackageUpdate", "post-install-cmd": [ "wp core update-db --path=wp", "wp core language install ja --activate --path=wp " ] },
あとは、デプロイツールでデプロイ後に composer install
を実行すれば環境が整います。スバラシイ!!
まとめ
WP-CLIでロケールとマイグレーションの管理方法をまとめてみました。 WordPress.Skeletonを利用している場合、デプロイを行うと言語ファイルがリセットされたり、DBマイグレーションをどう行うかが課題になっていたので、WP-CLIが対応していて助かりました。 気軽にWordPressをデプロイ・冗長構成化できるように今後も環境を整えていこうと思います。
*1:プラグインによってはマイグレーション方法が異なるため、各プラグインのマニュアルを参照ください。