Mimizuku Advent Calendar 23日目の記事です。
先日の記事でも書きましたが、Mimizuku は Composer を使って Packagist で配布を行っています。composer コマンドで Packagist にあるライブラリをダウンロードするには次のようなコマンドを打ちます。
$ composer install squizlabs/php_codesniffer
これでライブラリがコマンドを実行したディレクトリにダウンロードされるのですが、ファイルはそのディレクトリの中のvendor/というディレクトリ内に配置されます。WordPress テーマの場合はwp-content/themes/テーマという配置にならないといけないので一工夫が必要です。
インストールする側
composer installでダウンロードされるライブラリの配置場所をvendor/から変更するにはインストールする側の composer.json にinstaller-pathsを追加します。もう詳しく覚えていませんが多分 composer/installers というライブラリもインストールしておいたほうが良かったような気がしますのでそれも書きます。
{
"require": {
"composer/installers": "^1.2"
},
"extra": {
"installer-paths": {
"../{$name}": ["type:wordpress-theme"],
"../../plugins/{$name}": ["type:wordpress-plugin"]
}
},
... 省略 ...
extra.installer-paths の中でtype:wordpress-themeとtype:wordpress-pluginという2つのタイプを記述していて、それぞれがvendor/じゃなくどこのディレクトリに配置されるべきか、ということを書いています。composer installを実行するディレクトリからの相対パスでテーマのディレクトリとプラグインのディレクトリを指定します。Mimizuku Child の composer.json にも同じ記述をしているので参考になるかと思います。
ちなみに上記のコードは wp-content/themes/テーマ/の中で実行する場合のサンプルです。例えばそこで
$ composer install inc2734/mimizuku
とすると、次のように配置されます。
wp-content/
└ themes
├ テーマ
└ mimizuku
ライブラリ(インストールされる側)
インストールする側で「type:wordpress-themeのときはwp-content/themes/{$name}にダウンロードする」という記述をしましたが、インストールされる側ではこのタイプ(type:wordpress-theme)を明記するようにします。Mimizuku のようなテーマだとこんな感じです。
{
... 省略 ...
"type": "wordpress-theme",
... 省略 ...
プラグインなら wordpress-theme のところを wordpress-plugin ですね。
