#22993 closed defect (bug) (fixed)
Admin - users without a role are difficult to find
Reported by: | logikal16 | Owned by: | johnbillion |
---|---|---|---|
Milestone: | 4.4 | Priority: | normal |
Severity: | normal | Version: | 3.5 |
Component: | Users | Keywords: | has-patch has-unit-tests has-screenshots |
Focuses: | ui, administration | Cc: |
Description
There doesn't appear to be a filter to display users *without* a role (see the screenshot). The ideal solution would be to add a filter for "None".
Attachments (5)
Change History (22)
#2
follow-up:
↓ 4
@
12 years ago
- Keywords ux-feedback added; dev-feedback close removed
Thats incorrect. You can do it through the interface of WordPress but I'm curious if we should check on it.
#3
@
12 years ago
WP core allows for users without roles, hence this should be core territory. On sites with thousands of users, the ability to find users without roles is important.
IMO, there's no reason why a role filter couldn't get added, and live beside the existing text filters, e.g.
Administrator (440) | Subscriber (50) | No Role (25)
Patch coming soon...
#4
in reply to:
↑ 2
;
follow-up:
↓ 5
@
12 years ago
Replying to markoheijnen:
Thats incorrect. You can do it through the interface of WordPress but I'm curious if we should check on it.
Where are you able to add a user without a role? I attempted to manually add a user via Users -> Add New and it makes you select a role.
For allowing anyone to register. The option on Settings -> General makes you select a default role.
I am just curious because I am unaware of it.
#5
in reply to:
↑ 4
;
follow-up:
↓ 6
@
12 years ago
Replying to MikeHansenMe:
Where are you able to add a user without a role?
Not add, but you can set "No role for this site" from their profile.
#6
in reply to:
↑ 5
@
12 years ago
Replying to helen:
Replying to MikeHansenMe:
Where are you able to add a user without a role?
Not add, but you can set "No role for this site" from their profile.
Thanks, I was unaware of this. I am all for adding a link to filter users without roles then.
#7
@
12 years ago
The first issue is within count_users(). By default, it uses a LIKE query to see if the current role is within the serialized wp_capabilities
array. For users without roles, this won't work.
- A subscriber:
a:1:{s:10:"subscriber";b:1;}
- A user with no role:
a:0:{}
#8
follow-up:
↓ 9
@
12 years ago
Thats shouldn't be a problem since the value is always the same so we can check on the value "a:0:{}"
#9
in reply to:
↑ 8
@
12 years ago
Replying to markoheijnen:
Thats shouldn't be a problem since the value is always the same so we can check on the value "a:0:{}"
Unless the user has a single capability (no role).
#10
@
11 years ago
- Keywords has-patch added; needs-patch removed
I'm new to core and this is my first patch attempt, so please be merciless in your criticism, both of the patch itself the ticket update.
I left count_users() alone but I suppose it could also be easily updated to include a count for users with no role if that's deemed necessary. Went with a NOT REGEXP to find users with no role, even if they have other capabilities defined. Have not tested in multisite, but have no reason to believe it won't work there.
#12
@
9 years ago
- Keywords has-patch needs-unit-tests added; ux-feedback needs-refresh removed
- Milestone changed from Awaiting Review to 4.4
- Owner set to johnbillion
- Status changed from new to assigned
22993.3.diff addresses this and is based on the patch from spmlucas.
The main difference is that it modifies the count_users()
function so it also counts the number of users with no role. This means that no extra database queries are added to the Users screen by default, and the potentially expensive wp_get_norole_users()
function is only called when the user clicks the 'No role' filter.
This needs unit tests for wp_get_norole_users()
and count_users()
, and some comprehensive testing on multisite. Also the wp_get_norole_users()
function needs a better name.
#14
@
9 years ago
In 22993.4.diff:
wp_get_norole_users()
is nowwp_get_users_with_no_role()
.- Tests for
count_users()
andwp_get_users_with_no_role()
on single site and multisite.
I'm very happy with this patch. No additional queries are added to the Users screen, unless you click the 'No role' link on a site which has some users without a role. Multisite remains unaffected and doesn't show the 'No role' link anywhere.
I think the only way you could get a user without a role would be through a plugin. I would think these plugins should create a role(without capabilities if necessary) if they do not wish to use one of the existing roles. Then their custom role would be able to be filtered.