Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
WP-CLI サブコマンド
10分でつくる。
By Hinaloe (@hnle0)
@WordBench Kyoto
2015 12/19
忘年会という名のLT大会@CRAワークサポートセンター
Who
▪Hinaloe
▪ WordPress core contributor
▪ 4.2.2,4.4,4.4.1
▪ フォーラムの常連
▪ WordPress歴だいたい6年?
▪ ここのBenchで多分最弱最若
▪ ここのBenchのモデ...
LTできません
LT苦手です
▪LTって何やればいいんだ…
LTこわい
東京の人
笑わない
こわい
H氏
即興コントで
スベり芸決め
ようと思ったら
めっちゃウケた
G氏
jQueryネタで
タダ飯食いに行ったら
おもしろで
ホッテントリ入った
P氏
LTこわい。
▪ 滑舌悪い
▪ 噛みまくります
▪ 聞き取りにくいです
▪ 死にたい
LTこわい。
▪ネタはないです。
▪ 真面目な話だけで終わります
WP-CLI
▪ WordPressをコマンドラインから操作するツール
▪ コマンドはPHPで書ける
▪ REST-APIと連携するプロジェクトのKick Starterもあるらしい (?)
デベロッパーはダッシュボードを開かない
▪CLIで大抵何でもできる
→普段はわざわざダッシュボード開かない
WordCamp Tokyo 2015
もちろん行ってませんw
Hello Kushimoto
▪ WordCamp Tokyo 2015でとろゆにさ
んたちが作った串本のMさんの名言集
▪ Hello Dolly のオブジェクト指向再実装
▪ アクティブインストールよりコントリビュータ―
が多い伝説のプラ...
WP-CLIのサブコマンドを作る
▪ 目標:`wp cli kushimoto say` でMさんの名言をコマンドラインに表示する
▪ もちろんコーディング込
▪ PhpStormの補完を借りる
▪ コマンドの作り方:
https://gith...
本家で実装されてた
▪気付いたらなんかあの人が書いてた💢
このコミット直前の状態で聞いてね!(
↑あの人
下準備
▪ Composer でWP-CLIをインストール
`composer global require wp-cli/wp-cli`
▪ External LibrariesにWPとComposerリポへの
PATHを通しておく
(Con...
WP_CLI_Command を継承したクラスを作る
▪ これが本体になる
メソッド(サブコマンド)を書く
▪テキトーに書いた。
methods
▪WP_CLI::lineで単行出力
public function say( $args, $assoc_args ) {
/**
* @var Hello_Kushimoto_Random_Speaker
*/
$speak...
Methods (表)
▪ Listメソッドは作れない(PHPの予約語)→アノテーションで対応
▪ 表の出力はFormatterがいい感じにやってくれる
/**
* Show list of Quotations
*
* @subcommand...
invoke
▪ サブコマンドを作らずにコマンドにする。
/**
* Hello Kushimoto.
*
*/
public function __invoke() {
echo self::$speaker->speak();
echo "...
コマンドをWP-CLIに登録する
WP_CLI::add_command( 'kushimoto', 'Kushimoto_CLI' );
プラグインから読み込む
▪ CLIの時のみ読み込む(重要)
if ( defined( 'WP_CLI' ) && WP_CLI ) {
require __DIR__ . '/src/class-kushimoto-cli.php';
}
出来上がり。
WP-CLI
> wp kushimoto list
+-----+--------------------------------------------------------------+
| No. | Quotation...
10分で出来る
▪ やってみたら基本的な部分は出来てた気がする。
▪ 少なくともsayコマンドは実装出来た。
10分で出来なかった
▪ display_itemとdisplay_itemsを間違えて1時間悩んでたのは内緒。
Thanks!
▪ 今回のは(本家で色々変化があったから)使わないことにし
たけどGitHubに上げておきます
hinaloe/hello-kushimoto:cli-old
WP-CLI サブコマンド 10分でつくる。@WordBench Kyoto
Upcoming SlideShare
Loading in …5
×

WP-CLI サブコマンド 10分でつくる。@WordBench Kyoto

1,679 views

Published on

WordPress プラグインのWP-CLIコマンドを作ってみる。

@WordBench Kyoto
2015 12/19
忘年会という名のLT大会@CRAワークサポートセンター

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

WP-CLI サブコマンド 10分でつくる。@WordBench Kyoto

  1. 1. WP-CLI サブコマンド 10分でつくる。 By Hinaloe (@hnle0) @WordBench Kyoto 2015 12/19 忘年会という名のLT大会@CRAワークサポートセンター
  2. 2. Who ▪Hinaloe ▪ WordPress core contributor ▪ 4.2.2,4.4,4.4.1 ▪ フォーラムの常連 ▪ WordPress歴だいたい6年? ▪ ここのBenchで多分最弱最若 ▪ ここのBenchのモデレーターを押し付けられかけてる
  3. 3. LTできません
  4. 4. LT苦手です ▪LTって何やればいいんだ…
  5. 5. LTこわい 東京の人 笑わない こわい H氏 即興コントで スベり芸決め ようと思ったら めっちゃウケた G氏 jQueryネタで タダ飯食いに行ったら おもしろで ホッテントリ入った P氏
  6. 6. LTこわい。 ▪ 滑舌悪い ▪ 噛みまくります ▪ 聞き取りにくいです ▪ 死にたい
  7. 7. LTこわい。 ▪ネタはないです。 ▪ 真面目な話だけで終わります
  8. 8. WP-CLI ▪ WordPressをコマンドラインから操作するツール ▪ コマンドはPHPで書ける ▪ REST-APIと連携するプロジェクトのKick Starterもあるらしい (?)
  9. 9. デベロッパーはダッシュボードを開かない ▪CLIで大抵何でもできる →普段はわざわざダッシュボード開かない
  10. 10. WordCamp Tokyo 2015 もちろん行ってませんw
  11. 11. Hello Kushimoto ▪ WordCamp Tokyo 2015でとろゆにさ んたちが作った串本のMさんの名言集 ▪ Hello Dolly のオブジェクト指向再実装 ▪ アクティブインストールよりコントリビュータ― が多い伝説のプラグイン ▪ VCCWには入れてもらえなかった() torounit/hello-kushimoto
  12. 12. WP-CLIのサブコマンドを作る ▪ 目標:`wp cli kushimoto say` でMさんの名言をコマンドラインに表示する ▪ もちろんコーディング込 ▪ PhpStormの補完を借りる ▪ コマンドの作り方: https://github.com/wp-cli/wp-cli/wiki/Commands-Cookbook ▪ ドキュメントアノテーション(help text)も書かなきゃだけど割愛 ▪制限時間は10分
  13. 13. 本家で実装されてた ▪気付いたらなんかあの人が書いてた💢 このコミット直前の状態で聞いてね!( ↑あの人
  14. 14. 下準備 ▪ Composer でWP-CLIをインストール `composer global require wp-cli/wp-cli` ▪ External LibrariesにWPとComposerリポへの PATHを通しておく (Content rootのほうがいいかも) ▪ 必要に応じてPhpStormのデプロイ設定、コマンドラ インツールの設定 C:¥Windows¥System32¥cmd.exe Microsoft Windows [Version 7.1.7000] Copyright (c) 2008 Microsoft Corporation. All rights reserved. C:¥Users¥UserName> composer global require wp-cli/wp-cli ………
  15. 15. WP_CLI_Command を継承したクラスを作る ▪ これが本体になる
  16. 16. メソッド(サブコマンド)を書く ▪テキトーに書いた。
  17. 17. methods ▪WP_CLI::lineで単行出力 public function say( $args, $assoc_args ) { /** * @var Hello_Kushimoto_Random_Speaker */ $speaker = apply_filters( 'hello_kushimoto_speaker', new Miyasan() ); $chosen = $speaker->say(); WP_CLI::line( $chosen ); }
  18. 18. Methods (表) ▪ Listメソッドは作れない(PHPの予約語)→アノテーションで対応 ▪ 表の出力はFormatterがいい感じにやってくれる /** * Show list of Quotations * * @subcommand list */ public function list_( $args, $assoc_args ) { …… $formatter = new ¥WP_CLI¥Formatter( $assoc_args, $this->fields ); $formatter->display_items( $words ); }
  19. 19. invoke ▪ サブコマンドを作らずにコマンドにする。 /** * Hello Kushimoto. * */ public function __invoke() { echo self::$speaker->speak(); echo "¥n"; } https://github.com/torounit/hello- kushimoto/blob/519dbd849499c4395dabd0b9e8c8a5f87a 1ac1f3/src/class-hello-kushimoto-cli.php
  20. 20. コマンドをWP-CLIに登録する WP_CLI::add_command( 'kushimoto', 'Kushimoto_CLI' );
  21. 21. プラグインから読み込む ▪ CLIの時のみ読み込む(重要) if ( defined( 'WP_CLI' ) && WP_CLI ) { require __DIR__ . '/src/class-kushimoto-cli.php'; }
  22. 22. 出来上がり。 WP-CLI > wp kushimoto list +-----+--------------------------------------------------------------+ | No. | Quotation | +-----+--------------------------------------------------------------+ | 0 | 台風中継でおなじみの和歌山県串本町から来ました。 | | 1 | お客さんから不吉なメールが来た。見なかったことにしよう。。。 | | 2 | めんどくさい案件を全部断って楽な案件だけを求め続けてたらいつのまにか串本に住んでました。 | | 3 | え?まだMAMPで消耗してるの? | | 4 | え?まだこれからもMAMPで消耗してるの? | | 5 | Windowsはガン無視です 笑 | | 6 | sudoならインストールできた? だめですよそんなのずっとsudoですることになりますよ? | | 7 | sudoなんて邪道ですよ。そんなもんできたことになりません。 | | 8 | あのねみなさんね ブログに書いてあるコマンドとか実行しちゃうでしょ あれ大体間違ってますよ | | 9 | みなさん自分が苦労したこと記事に書きたくなるでしょ? 苦労したって事はそれはどっか間違ってんですよ | | 10 | CMSのコアのソースを読むとか時間の無駄 | | 11 | お見積依頼ですか? | | 12 | それプルリクください | | 13 | プルリクお待ちしてます! | | 14 | なぜそうなるかわかりますか? | | 15 | 整理できていない知識はないのと同じですよ | | 16 | とりあえず何か公開しろ。話はそれからじゃっ! | | 17 | オープンソースっぽくない奴はほんとダメ | | 18 | すげー、熱烈に握手をもとめられたのでどうしたのかと思ったら、Contact Form 7の作者とまたもや間違えられました | | 19 | 高速が開通したんだって!大阪まで3時間切るかも! | | 20 | つくるのはなんでも作りますw(岡本さんがw | | 21 | 仕事や! 行ってこい! | | 22 | まじに楽しいのになー。自分が使いたい物を大っぴらに作って放置しとくだけで世界がどれだけ広がるか。 | | 23 | 自慢じゃないですが、1日で作りました。(自慢ですけど) | | 24 | え?そんなんできたうちに入りませんよ。rootに変わるなんてうんこです。 | | 25 | MAMPなんてアンインストールしちゃえばいいんですよ。 | | 26 | 世界は変化してるんです。半年前はそんなのありませんでした。 | | 27 | すぐにsudoしたら?って言うエンジニアは信用しちゃいけません。 | | 28 | 串本の海?台風の後に犬の散歩してると、サメが打ち上げられたりしてますね。 | PhpStormでは Ctrl(⌘cmd)+Shift+Xでコマンドラインツール呼 び出し! WP-CLI > wp kushimoto say え?まだMAMPで消耗してるの?
  23. 23. 10分で出来る ▪ やってみたら基本的な部分は出来てた気がする。 ▪ 少なくともsayコマンドは実装出来た。
  24. 24. 10分で出来なかった ▪ display_itemとdisplay_itemsを間違えて1時間悩んでたのは内緒。
  25. 25. Thanks! ▪ 今回のは(本家で色々変化があったから)使わないことにし たけどGitHubに上げておきます hinaloe/hello-kushimoto:cli-old

×