Jetpack等のプラグインのWP-CLIコマンドと、WP-CLI開発に関するWordCamp動画

この記事はWP-CLI Advent Calendar 2014 – Adventarの23日目の記事です。1日遅れてしまい、スミマセン…

1つの記事にするほどでもないので(汗)、今回は2つを1つにしました。

  • プラグインに含まれているコミュニティ・コマンド
  • A Journey To The Center Of WP-CLI

プラグインに含まれているコミュニティ・コマンド

WP-CLIのコミュニティ・コマンドを追加するには、コミュニティ・パッケージをインストールして追加する方法と、プラグインを有効化することによって追加する方法の2通りがあって、両方ともすでに今回のAdvent Calendarで取り上げられています。

既存のプラグインの場合、すでにWP-CLIコマンドに対応しているプラグインがあり、WP-CLIのGitHubページで確認できます。

List of community commands · wp-cli/wp-cli Wiki

Advanced Custom FieldsやBackWPup、Jetpack、WP Super Cache、W3 Total Cacheなど、すでに対応しているポピュラーなプラグインが幾つかあります。WP Migrate DB Pro のように、有料版でのみ対応している場合もあります。

JetpackのWP-CLI

その中から、JetpackのWP-CLIコマンドを見てみました。wp jetpack helpで確認すると下記コマンドがあることが分かります。

  • wp jetpack disconnect [blog|[user <user_id>]]

  • wp jetpack module [list|activate|deactivate|toggle [<module_name>]]

  • wp jetpack status

statusはこんな感じ。

$ wp jetpack status
Success: 現在 Jetpack は WordPress.com アカウントに連携済みです
Jetpack バージョンは 3.3 です
WordPress.com blog_id は 1076823 です

残念ながら、サブ・サブコマンド([~]の中)がバグで使えなくなっています。周知のバグでfixする予定ではあるみたい。

$ wp jetpack module list
<span style="line-height: 1.6471;">Warning: The `wp jetpack module` command has an invalid synopsis part: [list|activate|deactivate|toggle
</span><span style="line-height: 1.6471;">Warning: The `wp jetpack module` command has an invalid synopsis part: [&lt;module_name&gt;]]
</span><span style="line-height: 1.6471;">Error: Too many positional arguments: list

A Journey To The Center Of WP-CLI

WordCamp.tvに、現在リポジトリをメインテインしているDaniel BachhuberさんのWCNY2014の時のセッション動画を見つけたので紹介。

Daniel Bachhuber: A Journey To The Center Of WP-CLI | WordPress.tv

内容は、DanielさんがWP-CLIを使い、プルリクを送るようになったきっかけから、ユニットテストなどを用いたWP-CLIそのものの開発について語っています。

WP-CLIとCronの合わせ技でテーマの有効を予約設定する

この記事はWP-CLI Advent Calendar 2014の16日目の記事です。

WP-CLIのwp theme activateをCronと組み合わせて、テーマの有効を予約設定してみました。

Cron設定の仕方

Cronの設定については下記などを参照。

Cronを設定するには2通りの方法があるということを、実は今回知りました。crontab -eでCrontab画面を立ち上げて指定する方法と、/etc/crontab を直接編集する方法です。今回はcrontab -e方法だとうまくいかなかった(※)ので、vi /etc/crontabで直接編集しました。

※たぶんコマンドが間違えてたとかそういうのだと思われ。とはいえ、/etc/crontabを直接編集する方が分かりやすいと思いました。

例えば、12月16日13時45分に設定をするには下記の様に記述。user-nameには実行するユーザー名が入ります。

45 13 16 12 * user-name 何かの処理

なお、これだと実際は毎年12月16日13時45分に処理を行うという設定なので、1回だけであれば実行された後に手動で削除する必要があります。

VCCWを使ったローカル環境で試してみる

まずはローカルのVCCWで試してみました。VCCWは現在の日付・時刻をdateで確認するとUS時間でした。なぜだろう…en_US設定だからかな。ともかく、今回はテストなのでその時間に合わせてCronを設定。下記は12月15日17時14分にTwenty Fifteenを有効化する設定です。

47 17 15 12 * vagrant /usr/local/bin/wp --path=/var//var/www theme activate twentyfifteen

なお、vagrantユーザーでは/etc/crontabの編集はできなかったで、suする必要があります。実行するユーザー名はvagrantでも問題なかったです。

本番環境で試してみる

ローカルでうまくいったので、実際に本番環境、つまりこのブログ、で試してみました。

“`0 2 16 12 * /usr/local/bin/wp –path=/path/to/wordpress theme activate wilson

1 2 16 12 * root /usr/local/bin/wp –path=/path/to/wordpress nginx flush“`

これも問題なく有効化。2行目はNginx Cache ControllerのWP-CLIコマンドで、Wilsonというテーマをactivateした1分後にNginxのキャッシュをフラッシュしています。

/usr/local/bin/wpはWP-CLIの場所。/path/to/wordpressはWordPressのインストール場所。環境/サーバーによって違うので、正しく設定する。ここが一番注意するところかもしれません。僕も何回か間違えて設定し直しました。また、path=〜パラメータは wpの直後に記述する必要がありました。下記のように記述するとうまくいきません。

0 2 16 12 * /usr/local/bin/wp theme activate wilson --path=/path/to/wordpress

12月16日に試したこと

テストがうまくいったので、12月16日(つまりAdvent Calendar16日目…)にこういう設定をしておきました。

0 8 16 12 * root /usr/local/bin/wp --path=/path/to/wordpress theme activate highwind
0 13 16 12 * root /usr/local/bin/wp --path=/path/to/wordpress theme activate wilson
0 19 16 12 * root /usr/local/bin/wp --path=/path/to/wordpress theme activate twentyfifteen
1 8,13,19 16 12 * root /usr/local/bin/wp --path=/path/to/wordpress nginx flush

8時にHighwindを、13時にはWilsonを、そして19時にはTwenty Fifteenが有効化されるように設定し、さらにそれぞれその1分後にはキャッシュをフラッシュ。

それぞれの時間に職場からアクセスしてチェックしてみたのですが、うまくいっていたようです。

実際に仕事で使える?

サイドバーやウィジェットの設定はテーマを変更するとそのテーマに合わせて設定し直す必要があるので、いきなり新しいテーマを予約設定するのは現実的ではないかもしれません。良いデベロッパーならば、ステージングですべてテストしている上に、ファイルとDB(もしくはそれらの差分)を簡単にデプロイできるようにしているでしょうから、実際にはそのデプロイをスクリプトにしてCron設定しますよね。

WordPressのありとあらゆる設定がWP-CLIから変更できるようになると…

WP-CLIの(特に初めての人向け)紹介でよく目にするwp theme activateですが、「1行のコマンドで新しいテーマを有効化できて便利ですよ〜」と解説しても、日常的に黒い画面を使っていない人であれば「テーマの有効化なんて管理画面からできるし、GUIで楽」ってなるかと思うんです。でも、CLIでWordPressの設定変更ができるようになることのミソは「1行で便利〜」ではなく、コマンドという文字列(スクリプト)に書き出せることです。スクリプトにさえできれば活用の幅が広がります。

たとえば、今回のようにCronと組み合わせることで、いろいろな「予約」ができるようになります。WP-CLIを使わない場合、デフォルトでできるのは投稿の予約ぐらいです。ローカル開発用にWordPressを立ち上げる時に毎回行っている設定などはスクリプトとして保存しておき、必要な時に実行すると、あとはパソコンがすべて処理してくれます。たとえばMemo: wp-cli commands for the theme reviewers. | Days in Thailand

そんなワクワク感がいいなと思ってます。

Mac OS XのJISキーボードでバックスラッシュを入力するには

CodeschoolのJavaScript講座でバックスラッシュ(\)を入力する必要があり、¥を入力してみましたが認識されず。今更ながら分からずに調べたのでメモ。

Optionキーを押しながら¥キーを押す。

それだけです。

参考:Macにおけるバックスラッシュ(\)の入力方法 – Qiita