WordPress テーマと composer

mimizuku

Mimizuku Advent Calendar 23日目の記事です。

先日の記事でも書きましたが、MimizukuComposer を使って 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-themetype: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 ですね。

  • ブックマーク
  • Feedly

この記事を書いた人

キタジマタカシ

長崎在住、フリーランスのWordPress テーマ / プラグインデベロッパー。 多数のプロダクトをオープンソースで開発・公開しています。現在は WordPress 有料テーマ Snow Monkey を開発・販売しています。