WordPress.Skeleton

WordPress でサイトを作るときに自分のコードにフォーカスするためのスケルトン を作ってみました。よろしければ使ってみてください。

使い方

$ composer create-project wordpress/skeleton {project-name}
$ cd {project-name}
$ cp local-config-sample.php local-config.php
$ vi local-config.php # tailor to your environment

詳しくはこちら

コンセプト

WordPress 本体のソースやプラグインのソースを自分のリポジトリでバージョン管理せずに、全て composer でインストールできるようになっています。

WordPress でサイトを作る場合、一般的にはそのサイトの資産は

  • 自作したテーマのソースコード
  • データベースの中身
  • アップロードされたファイル

だと思うので、これらだけにフォーカスして管理ができるようにしたつもりです。(データベースとアップロードファイルは mysqldump/zip したものを定期的にコミットするような運用を想定してます。)

車輪の再発明ではないのか

WordPress のスケルトンと言えば、WordPress の中の人が作ってくれている markjaquith/WordPress-Skeleton が有名なようですが、試してみたところ以下の点に不満を持ちました。

  • composer create-project でインストールできない
  • インストール時に composer install ではなく git submodule init; git submodule update しないといけない (直感的じゃないし WordPress/WordPress のファイル数が多くてべらぼうに時間がかかる)
  • wpackagist でプラグインをインストールすると (content じゃなく) wp-content にインストールされてしまうので、自力でインストール先を変更しないといけない (これだけならディレクトリ名を変えるだけなのでコントリビュートしろって話ですが)
  • content/wp/ の外にあるため、/wp/ をドキュメントルートにして使えない (URL に /wp/ って入っちゃう)
  • define( 'WP_CONTENT_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/content' ); ってやってるので、ドキュメントルート直下でしか動作しない (開発環境ではいちいち hosts とか vhost の設定するの面倒なのでサブディレクトリでも普通に動いてほしい)
  • content/uploads を別階層の shared ディレクトリに symlink する運用が前提になっているけど、その辺はデプロイツール (capistrano) に任せればいいのでは

特に、URL に /wp/ が入っちゃう問題はめちゃめちゃクリティカルだと思うんですが、皆さんどうしてるんでしょう…?

とりあえずこの辺りの不満を解消できる形にしたつもりなので、使ってみて何かご意見があれば issuePR をいただければ幸いです。

余談

markjaquith/WordPress-Skeleton を使ってみるまで知らなかったんですが、WordPress って一階層上までは wp-config.php を探してくれるんですね。 https://github.com/WordPress/WordPress/blob/master/wp-load.php#L34 複数の WordPress を一括で設定できるように、っていうことなんでしょうか。