wp-cliのglobalパラメータ/YAMLコンフィグのオプション ( WP-CLI Advent Calendar 2014 5日目 )

WP-CLI アドベントカレンダー 2014 の第5日目!昨日の @wokamoto さんによる Chef で wp-cli を管理するためのレシピ | dogmap.jp に続きまして、頑張らせていただきます!

グローバルなパラメータ?

wp-cli には、すべてのコマンドと一緒に使うことができるグローバルパラメータというものがあり、 Configuration | WP-CLI のページで解説されています。

たとえば、以下のコマンドは WordPress がインストールされているパスを指定する --path というパラメータをつけています。

$ wp option get home --path=/var/www/vhosts/example.com/

wp option get home は、 WordPress の home_url( '/' ); が返す値を得るためのコマンドです。通常、 wp-cli は WordPress がインストールされているディレクトリ以下でなければ使えませんが、 --path=/path/to/wp/ をつけることで、ターミナルでそこまで移動していってコマンドするのと同じことになります。移動の手間が省けるだけではなく、複数の処理にまとめるときだとか、cronで実行するときなどに便利です。

そこで今日は、

  1. グローバルパラメータの種類
  2. これらのパラメータは設定ファイルにも書いて置いておくことができるのだが、その優先順位

について書きたいと思います。

設定ファイルについてはどなたかがこのリレーブログの中で誰かが書いてくれるであろうことを期待しております。誰も書かなければ来週も私なので書こうと思います。

グローバルパラメータの種類

フラグ 説明
--path=<path> WordPressがインストールされているディレクトリへのパスデフォルト値: null
--url=<url> リクエストが行われたURLを仮想的に指定できます。マルチサイトでは、この引数を指定することでどの子サイト(または親サイト)でコマンドを実行するのかを特定することができます。たとえば、
wp plugin status --url=colog.jp
だと親サイト、
wp plugin status --url=colog.jp/colochan または、 wp plugin status --url=colochan.colog.jp
で特定の子サイトで、どのようなプラグインがインストールされていて有効化されているかなどの状態が分かります。デフォルト値: null
--user=<id|login|email> WordPressのユーザを指定する。(ことができるらしいのですが、使い道が思いつきません。 wp user コマンドではIDなどをそのまま指定できますし、wp post url などで --user=<id> を指定しても絞り込むことはできませんでした。)デフォルト値: null
--skip-plugins[=<plugin>] プラグインのロードをスキップすることができます。
例: wp user generate --skip-plugins=user-role-editor でユーザに関するプラグインの影響を受けないようにしながらユーザを作成する。デフォルト値: ""
--require=<path> コマンドが実行される前にロードされるべきphpファイルを指定する。複数回使用可能。デフォルト値: []
--no-color, --color 出力のカラーリングのオンオフ。デフォルト値: "auto"
--debug php エラーを表示するかどうかデフォルト値: false
--prompt 対話形式で値を渡したいときに使います。たとえば、wp-config.php を作成するための
wp core config
というコマンドでは、DBの名前やユーザ名他いろいろなパラメータを渡さないといけません。これをいちいち長いのを作るのが面倒な時、 wp core config --prompt とやりますと、以下のような形でひとつひとつ聞いてくれます。デフォルト値: false

$ wp core config --prompt
1/10 --dbname=: hello
2/10 --dbuser=: hey
3/10 [--dbpass=]: pass
4/10 [--dbhost=]: :)
5/10 [--dbprefix=]: (๑╹ڡ╹๑)
6/10 [--dbcharset=]: nyoro
7/10 [--dbcollate=]: asdf
8/10 [--locale=]: 123
9/10 [--extra-php] (Y/n): n
10/10 [--skip-salts] (Y/n): n
--quiet 情報系のメッセージを抑制することができます。デフォルト値: false

 

パラメータを指定する際の(指定方法の)優先順位

パラメータの指定は、コマンドと一緒に --example=example という形でつけるだけではなく、.ymlファイルに設定を書いておくことでも可能です。

たとえば、wp-cli.yml というファイルが置いてあるとして、その内容が、 skip-plugins: akismet backwpup third fourth の一行であったとすると、このファイルが設置されている場所以下でのコマンドに、この内容が反映され、指定されたプラグインは無いものとしてコマンドが実行されます。

ymlファイルの置き場所は複数ありますので、それらの優先順位をこれまた同じページからですが、日本語にしておきます。優先順位の高い順位、

  1. コマンドラインからフラグを付けて指定する
  2. wp-cli.local.yml ファイル内の指定。
  3. wp-cli.yml ファイル内の指定内容。
  4. ~/.wp-cli/config.yml ファイル内の指定内容。(パスは環境変数 WP_CLI_CONFIG_PATH で変更が可能)
  5. デフォルト値

この優先順位の利用方法としては、たとえばローカル環境にたくさんのWordPressがいるとして、

  • どのプロジェクトでも使いたい設定については ~/.wp-cli/config.yml に。
  • 特定のプロジェクトだけで利用したい設定については wp-cli.yml に。
  • 特定のプロジェクトで、ローカルだけで利用したい設定については wp-cli.local.yml に書いて .gitignore に記載。

といった形にしておくと、細かいことを気にしないで短いコマンドを使うことができるかと思います。忘れると面倒だけど。

というわけで、本日はグローバルなパラメータがあったんだ!ということで、何かの時に思い出していただければと思います。

明日は、yuji.takehiro さんです!(明日、リンクします!)

↓ プラグインを作る方々への本、書きました。 ↓

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です