Skip to content

Commit 66bdeae

Browse files
Merge pull request #360 from BhargavBhandari90/issue-34
Support filtering for users without a role with `--role=none`
2 parents 4839ce5 + 90c7c13 commit 66bdeae

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

features/user-list.feature

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,18 @@ Feature: List WordPress users
2626
"""
2727
bobjones
2828
"""
29+
30+
@require-wp-4.9
31+
Scenario: List users without roles
32+
Given a WP install
33+
When I run `wp user create bili bili@example.com --porcelain`
34+
Then save STDOUT as {USER_ID}
35+
36+
And I run `wp user create sally sally@example.com --role=editor`
37+
And I run `wp user remove-role {USER_ID} subscriber`
38+
39+
When I run `wp user list --role=none --field=user_login`
40+
Then STDOUT should be:
41+
"""
42+
bili
43+
"""

src/User_Command.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,17 @@ public function list_( $args, $assoc_args ) {
162162

163163
$assoc_args['count_total'] = false;
164164
$assoc_args = self::process_csv_arguments_to_arrays( $assoc_args );
165-
$users = get_users( $assoc_args );
165+
166+
if ( ! empty( $assoc_args['role'] ) && 'none' === $assoc_args['role'] ) {
167+
$norole_user_ids = wp_get_users_with_no_role();
168+
169+
if ( ! empty( $norole_user_ids ) ) {
170+
$assoc_args['include'] = $norole_user_ids;
171+
unset( $assoc_args['role'] );
172+
}
173+
}
174+
175+
$users = get_users( $assoc_args );
166176

167177
if ( 'ids' === $formatter->format ) {
168178
echo implode( ' ', $users );

0 commit comments

Comments
 (0)