自作プラグインに追加した wp-cli コマンドの出力結果を整形しよう ( WP-CLI Advent Calendar 2014 18日目 )

WP-CLIアドベントカレンダーの18日目です。
昨日は @tecking さんの「ひっくり返るくらい超絶便利な wp media regenerate」でした。
今回は前回の続きです。

前回 wp-cli 対応させる方法について説明しましたが、一点出力フォーマットについて触れていませんでした。
てことで、今回はそのへんについて

と言っても、何も難しいことはなくて \WP_CLI\Utils\format_items( $format, $items, $fields ) を使用するだけです。
パラメータは以下の通り

  • @param string $format Format to use: 'table', 'json', 'csv', 'ids', 'count'
  • @param array $items Data to output
  • @param array|string $fields Named fields for each item of data. Can be array or comma-separated list

選べるフォーマットは 'table', 'json', 'csv', 'ids', 'count' 、どの形式を使用するかを第一引数に渡します。
第二引数には実際に表示するデータを、第三引数にはデータに付与するラベルを渡します。
Nginx Cache Controler では、以下のように実装しています。

/**
 * Show list of all proxy caches.
 *
 * ## EXAMPLES
 *
 *     wp nginx list
 *
 * @subcommand list
 */
function _list($args, $assoc_args) {
    $format = strtolower(isset($assoc_args['format']) ? $assoc_args['format'] : 'csv');

    $nginxchampuru = NginxChampuru::get_instance();
    $items = (array)$nginxchampuru->get_cached_objects();
    $fields = array( "cache_id", "post_type", "cache_url", "cache_saved");

    switch ($format) {
        case 'csv':
        case 'json':
            \WP_CLI\Utils\format_items( $format, $items, $fields );
             break;
        default:
             WP_CLI::error(sprintf('Invalid format "%s".', $format));
    }
    exit;
}

簡単ですね。

wp-cli では、他にも利用しやすそうなユーティリティ関数を用意しておいてくれています。
ake_progress_bar( $message, $count ) とか、http_request( $method, $url, $data = null, $headers = array(), $options = array() ) とか良さげな関数が色々ありますね。
ソースを確認してみると良いでしょう。
https://github.com/wp-cli/wp-cli/blob/master/php/utils.php

ってわけで、WP-CLI Advent Calendar 2014 18日目は終わりです。
金曜日の日直は、先週サボって自称西川さんに代打してもらっていた @shinichiN さんです、ひゃっっっっっっほーーー!

コメントを残す

メールアドレスが公開されることはありません。