OSDN Git Service

Implement `--fields` support for `wp user list`
authorDaniel Bachhuber <d@danielbachhuber.com>
Sun, 21 Apr 2013 05:48:25 +0000 (22:48 -0700)
committerDaniel Bachhuber <d@danielbachhuber.com>
Sun, 21 Apr 2013 05:48:25 +0000 (22:48 -0700)
php/commands/user.php

index e96e398..de3245f 100644 (file)
@@ -9,39 +9,44 @@ class User_Command extends \WP_CLI\CommandWithDBObject {
 
        protected $obj_type = 'user';
 
+       public $fields = array(
+                       'ID',
+                       'user_login',
+                       'display_name',
+                       'user_email',
+                       'user_registered',
+                       'roles'
+               );
+
        /**
         * List users.
         *
         * @subcommand list
-        * @synopsis [--role=<role>] [--format=<format>]
+        * @synopsis [--role=<role>] [--fields=<fields>] [--format=<format>]
         */
        public function _list( $args, $assoc_args ) {
 
                $defaults = array(
                        'blog_id'   => get_current_blog_id(),
-                       'fields'    => isset( $assoc_args['ids'] ) ? 'ids' : 'all_with_meta',
+                       'fields'    => implode( ',', $this->fields ),
                        'format'    => 'table',
                );
                $params = array_merge( $defaults, $assoc_args );
 
+               $fields = $params['fields'];
+               unset( $params['fields'] );
+
                if ( array_key_exists( 'role', $assoc_args ) ) {
                        $params['role'] = $assoc_args['role'];
                }
 
                if ( 'ids' == $params['format'] )
                        $params['fields'] = 'ids';
+               else
+                       $params['fields'] = 'all_with_meta';
 
                $users = get_users( $params );
 
-               $fields = array(
-                       'ID',
-                       'user_login',
-                       'display_name',
-                       'user_email',
-                       'user_registered',
-                       'roles'
-               );
-
                if ( 'ids' != $params['format'] ) {
                        foreach ( $users as $user ) {
                                $user->roles = implode( ',', $user->roles );