WordPressプラグインにWP-CLIサポートを追加する方法

公開: 2018-08-14

ユーザーのニーズに合わせてプラグインを調整することは、すべてのプラグイン所有者が従わなければならない主要な議題の1つです。 より多くのカラーピッカー、フォント、および同様の視覚的オプションを意味するフロントページスライダーの場合。 ただし、遅かれ早かれ開発者、管理者、およびその他のパワーユーザーに対応する場合は、CLIサポートが必要になります。 彼らはマウスを捨てて、キーボードだけで作業したいと思うでしょう。 WP-CLIプロジェクトのおかげで、プラグインにCLIサポートを追加するのは簡単です。

@wpcliサポートを#WordPressプラグインに追加することで、開発者、パワーユーザー、および管理者に公開します。

クリックしてツイート

永遠のGUI対CLIの戦い

邪魔にならないようにしましょう。GUI(グラフィカルユーザーインターフェイス)はCLI(コマンドラインインターフェイス)よりも優れていません。逆もまた同様です。CLIはGUIよりも優れていません。 人々はどちらか一方を好みます。 それは個人的な好みや習慣の問題です。 「それらは同じですか、交換可能ですか?」 いくつかの妥協点がありますが、そうなる可能性はありますが、白黒のコマンドラインインターフェイスで色を選択することを好む人は誰もいません。 それは単に逆効果です。 それらはそれぞれ特殊な目的を果たします。

「では、なぜ両方が必要なのですか? WPはよりGUI指向ではありませんか?」 つまり、WPはよりGUI指向です。 ただし、すべてのユーザーが対象というわけではありません。 一部の人々は、CLIにより適した方法でWPを使用し、それにより、WPをはるかに高速に使用できるようになります。 また、両方持ってみませんか? 何も膨らませたり邪魔になったりすることはありません。

つまり、WP-CLIはプラグインですよね?

いいえ、プラグインではありません。 WP-CLIを機能させるために、WordPressのインストールに何も追加する必要はありません。 OSで必要なのはWP-CLIだけです。 WP-CLIはPHPで記述され、pharにパックされています。 これは、PHPアプリケーション全体を単一のファイル「phar」(PHPアーカイブ)にまとめて、さまざまなOS間で簡単に配布およびインストールできるようにする方法です。 インストールプロセスはオペレーティングシステムによって異なりますが、WP-CLIハンドブックに簡単に文書化されています。または、ビデオに興味がある場合は、WindowsへのWP-CLIインストールの1つをご覧ください。

上記の内容を繰り返すつもりはありません。 十分に詳細であり、数分でWP-CLIを使用できるようになります。 実行している場合は、作業ディレクトリを作業する予定のWPインストールに変更し、 wp option get homeを実行して、正しいWPインストールが実行され、WP-CLIが機能することを確認します。

Windows 10でのWP-CLIの操作–カスタムの「site-info」コマンドの出力

見た目よりもシンプルです

まず、ユーザーがCLIを介してWPを操作しているかどうかを通知する関数が必要です。 これは、CLIでHTTPヘッダーを送信しない、「通常の」呼び出しにCLI関数を含めないなどの多くの場合に役立ちます。 また、わずかな変更を加えるだけで、元々GUI用に作成された古い関数を再利用する機会も得られます。

function is_cli_running() {
  return defined( 'WP_CLI' ) && WP_CLI;
}

次のステップは、CLIコマンドの名前を把握することです。 約40の組み込みコマンドがあります。 したがって、これらの名前を使用することはできません。おそらくGoogleを所有していないため、「google」などのブランド名は使用しないでください。 理想的には、プラグインの名前、またはプラグインが実行する一連の関数の包括的な名前にする必要があります。これにより、メインの名前空間を汚染しないように、すべてのコマンドをそのプラグインの下に置くことができます。 他のコードと同じように、それは常識です。 site-infoを使用して、サイトに関するさまざまな情報を返す関数をいくつか作成します。

物事をきちんと整理するために、すべてのWP-CLI関連のコードを新しいファイル( custom-wp-cli-commands.php入れます。 そのファイルは、必要な場合、およびCLI関連のすべてのコードが使用可能な場合にのみ含めます。 そのために、作成したばかりの関数を使用します。 テストと学習のために、ファイルをアクティブなテーマのフォルダーに配置し、これをテーマのfunctions.phpファイルに追加します。

if ( is_cli_running() ) {
  require_once 'custom-wp-cli-commands.php';
}

次に、これをcustom-wp-cli-commands.phpに入れます;

/**
 * Just a few sample commands to learn how WP-CLI works
 */
class cli_site_info extends WP_CLI_Command {
  /**
   * Display version information.
   * ## OPTIONS
   *
   * [--wponly]
   * : Shows only WP version info, omitting the plugin one.
   */
  function version( $args, $assoc_args ) {
    if ( !empty( $assoc_args['wponly'] ) ) {
      WP_CLI::line( 'Version of WordPress is ' . get_bloginfo( 'version' ) . '.' );
    } else {
      WP_CLI::line( 'Version of this plugin is 0.1-beta, and version of WordPress ' . get_bloginfo( 'version' ) . '.' );
    }
  }
    
    
  /**
   * Display the number of plugins.
   */
  function plugins() {
    WP_CLI::line( 'There are a total of ' . sizeof( get_plugins() ) . ' plugins on this site.' );
  }
}

WP_CLI::add_command( 'site-info', 'cli_site_info' );

サイト、ホームページ、または管理者をブラウザで開いても、何も起こりません。 それは良い。 新しいCLIコマンドをテストするには、コマンドラインウィンドウに戻り、 wp site-info versionを実行すると、プラグインとサイトのバージョンが取得されます。 または、 wp site-info pluginsを実行すると、サイト上のプラグインの総数が表示されます。 簡単ですよね? コードを見てみましょう。

PHPクラスを拡張するのと同じくらい簡単

クラスcli_site_infoは、 WP_CLI_Commandクラスを拡張します。 そこには何も派手ではありません。 クラスは好きなように呼び出すことができます。 重要なのは、ファイルの最後の行のコード– WP_CLI::add_command( 'site-info', 'cli_site_info' )です。 トップレベルのコマンドを登録し、クラスをそれに結び付けます。 site-infoコマンドを別のコマンドに変更する場合は、ここで変更します。

クラス内のすべてのパブリックメソッド(関数)は、WP-CLIのサブコマンドです。 コマンドの構造を確認して、適切なWP-CLI用語を学習してください。 メソッドをどこかに「登録」したり、特別なことをしたりする必要はありません。 plugins()version()で行ったように、標準関数を作成します。それだけです。 WP-CLIはそれをどうするかを知っています。

メソッドに入ると、必要なコードを実行できます。 ただし、CLIとの対話には、 echoなどが期待どおりに機能しないため、いくつかのカスタム関数が必要になります。 echoの代わりに、 WP_CLI::line()があります。 内部のWP-CLIAPIは、必要なものすべてをカバーし、すべての機能は十分に文書化されているだけでなく、入力、出力、その他、システム、およびその他のカテゴリに分類されているため、非常に簡単に見つけることができます。

テキストの印刷に加えて、おそらく(連想)コマンド引数を使用して、WPバージョン情報のみを出力するwp site-info version --wponly (試してみてください)のようなものを呼び出すことができます。 連想引数は、メソッドの2番目の関数引数に格納されます。 この場合、 $assoc_argsと呼ばれます。 残っているのは、 function version( $args, $assoc_args )行ったように、特定の値について配列キーをテストし、それに応じてコードを調整することだけです。

ドキュメントとCLIヘルプ

WP-CLIにはヘルプシステムが組み込まれています。 とても便利です。 開発者が自分のコードでコマンドを説明するために少し時間を費やす場合、コマンドの外部ドキュメントは必要ありません。 ドキュメントは(残念ながら)それ自体を記述しませんが、コマンドの作成中に最小限の投資を行うと、すべてのドキュメントを1つの屋根の下に置くため、ユーザーは永遠に感謝します。

PHPDoc形式を使用して、クラス内のドキュメントをコメントとして記述します。 詳細については、CLIハンドブックをご覧ください。 wp help site-infoを実行すると、サブコマンドのリストと説明が表示され、コードを見ると、それがどこから来ているのかがわかります。 非常に自明です。 versionサブコマンドの詳細については、 wp help site-info versionを実行すると、オプションの詳細も表示されます。

@wpcliは、多くの人が使用することはありませんが、#WordPressの未来や多くのユーザーの意見を形作る人がよく使用します。 プラグインにCLIを追加するのは賢明な方法かもしれません

クリックしてツイート

ユーザーを幸せにする

確かに、天気ウィジェットを開発している場合、WP-CLIサポートを追加することは正しい動きのようには聞こえません。 ただし、WP Resetなど、熱心な開発者や管理者が使用するツールは、WP-CLIの恩恵を大いに受けます。 ユーザーはコマンドを連鎖させ、bashスクリプトを記述し、一般的に、より多くのことをより速く、より簡単に行うことができます。 それは、あなたが実施している現金化モデルに関係なく、より良いレビュー、より幸せなユーザー、より多くのユーザー、そして最終的にはより多くのお金につながります。