WordPressの環境構築用パッケージとして以前紹介したwp-envだが、かなり進化が進んでいるので、便利な利用法を紹介する。
wp-envのドキュメント
Gutenbergリポジトリ内 @wordpress/env で開発がガシガシ進められているが、日本語チームの努力もあり、日本語ドキュメントもかなり整備されてきた。リリース直後から取り入れられた点は次の通り。
- xdebugの採用。起動時に
wp-env start --xdebug
と指定することでxdebugが有効になる。IDEの連携を利用すればステップデバッグ(ソースコードで処理を止めながらデバッグすること)も可能だ。 - 更新。
.wp-env.json
で定数を一時的に変更するなどした場合はwp-env start --update
とすることで更新が反映される。 - PHPバージョンの指定。5.6と7系のチェックなど、前よりも簡単に行えるようになった。
データベースへの接続
開発中にデータ構造がきちんと反映されているかを確かめたいケースがある。この場合、SequelAce(開発終了してMySQL 8をサポートしないSequelProの後継)のようなGUIアプリを使って「カスタムフィールドはちゃんと保存されているか?」「このプラグインでこの操作をしたときにデータはどのように変更されるか?」などをテストすることができる。
wp-envのデータベース情報は、docker ps
コマンドで確認できる。
このポートは起動のたびに変わるので、接続するときに確認しよう。上記の場合、ローカルホスト(0.0.0.0)の55053に接続すれば、GUIで確認できる。
マルチサイトの開発
マルチサイトは80以外のポートに対応していない。しかし、.wp-env.json
でポートを80に指定すれば、サブディレクトリ型に限りマルチサイトで開発できる。次のようにマルチサイトに必要な定数を定義しておけば利用可能だ。
{
"core": null,
"plugins": [ "." ],
"themes": [
"https://downloads.wordpress.org/theme/twentytwenty.latest-stable.zip"
],
"port": 80,
"config": {
"WP_DEBUG": true,
"SCRIPT_DEBUG": true,
"WP_DEBUG_LOG": true,
"WP_ALLOW_MULTISITE": true,
"MULTISITE": true,
"DOMAIN_CURRENT_SITE": "localhost",
"PATH_CURRENT_SITE": "/",
"SITE_ID_CURRENT_SITE": 1,
"BLOG_ID_CURRENT_SITE": 1
}
}
ホストの変更には対応していないので、今後のアップデートを待ちたい(※hostsファイルをいじればできるかもしれないが、未検証)
SSHでの操作
以前紹介したように、npm scripts
からCLIを実行する機能を持たせるのもよいアイデアだが、DockerなのでSSH接続をすることもできる。Docker Desktopアプリを利用しているなら、”wordpress_1″ で終わっているコンテナの”CLI”をクリックするだけでターミナルが立ち上がる。
wpコマンドは入っていないが、実際のファイルを確かめるときなどは役に立つだろう。ちなみに、wp-cliはnpm scriptsに記載するかnpxを使うか、どちらかの方法によりホストマシンから(=dockerコンテナにログインしなくても)実行できる。
npx wp-env run cli wp user list
オプション --role=admin
が無視されるので、オプションが必要ならpackage.jsonに記載しておこう。
{
"name": "my-plugin",
"scripts": {
"start": "wp-env start",
"update": "wp-env start --update",
"env": "wp-env",
"cli": "wp-env run cli wp",
"user:admin": "wp-env run cli wp user list --role=admin"
}
まとめ
継続的なアップデートにより、機能開発が進んでいるwp-env。まだ必要な機能はいくつかある(カスタムホスト、mailhogのようなメールキャッチャー)が、実装が進めばLocal by FlyWheelなどはもういらないかもしれない。なにより、リポジトリ内に環境設定を含めることができるのは魅力的だ。
まだ試したことがないという方は、もう実際の仕事でも使えるレベルまできているので、ぜひ試してみて欲しい。