👨‍💻

wp-env.jsonで定義したpluginsについての備忘録

2024/01/21に公開

概要

wp-envで開発環境を構築する際に、wp-env.jsonで定義したプラグインリストを開発ディレクトリ内に/pluginsとして出力させることができるので、mappingsとして定義しました。

しかし、実際には/pluginsにはディレクトリが出力されるだけで、実データは出力されないのでデプロイ用プラグインディレクトリを用意できず困ることがありました。

端的に言うと、wp-envは開発環境として利用しつつ、以下ディレクトリのみは新規プロジェクトのリポジトリにて管理できるようにしたかった。

- plugins/
- themes/

.wp-env.jsonでpluginsを定義する

{
  // ... 省略
  "themes": [
    "./src/themes/my-theme"
  ],
  "mappings": {
    "wp-content/uploads": "./uploads",
    "wp-content/plugins": "./init/plugins",
    "sql": "./sql"
  },
  "plugins": [
    "https://downloads.wordpress.org/plugin/wp-mail-logging.latest-stable.zip",
    "https://downloads.wordpress.org/plugin/wp-migrate-db.latest-stable.zip",
    "https://downloads.wordpress.org/plugin/wp-multibyte-patch.latest-stable.zip"
  ]
}

ここでmappingsで指定している、"wp-content/plugins": "./plugins"は必須ではないのですが、このあとjsonをテキスト修正するだけで済ませたかったので記述しています。
※./pluginsにはinit時にのみ展開され使用しない。

distdocker cp コマンドでコンテナからpluginsをコピーする

  1. [docker ps]コマンドを実行し、WordPressのコンテナ名を確認する。
docker ps

コンテナ名の例

e7f375e6af7d7bbb534476ec3df14e20-wordpress-1
  1. git cloneでdistディレクトリを予め作成しておき、[docker cp]コマンドを実行してプラグインファイルを開発環境にコピーします。
git clone [リポジトリURL] dist

docker cp [コンテナ名]:/var/www/html/wp-content/plugins ./dist/plugins

[cp]コマンドを実行し、distディレクトリに開発ソースをコピーしておく

cp -R ./src/* /dist/

.wp-env.jsonのmappingsを修正して再起動

themesとpluginsの出力先をdistに変更する。

{
  // ... 省略
  "themes": [
    "./dist/themes/my-theme"
  ],
  "mappings": {
    "wp-content/uploads": "./uploads",
    "wp-content/plugins": "./dist/plugins",
    "sql": "./sql"
  },
  "plugins": [
    "https://downloads.wordpress.org/plugin/wp-mail-logging.latest-stable.zip",
    "https://downloads.wordpress.org/plugin/wp-migrate-db.latest-stable.zip",
    "https://downloads.wordpress.org/plugin/wp-multibyte-patch.latest-stable.zip"
  ]
}

.wp-env.jsonの再読み込みをさせれば完了。

wp-env start --update

最終的なディレクトリ構造

├── dist # 新規プロジェクトディレクトリ
│   ├── .git
│   ├── .gitignore
│   ├── plugins
│   └── themes
├── init # 初期実行用
│   └── plugins
├── src # 開発用初期リソース
│   └── themes
├── uploads
└── .wp-env.json

Discussion