Make WordPress Core

Opened 15 months ago

Last modified 3 weeks ago

#27304 assigned defect (bug)

Improve user searching

Reported by: johnbillion Owned by: johnbillion
Milestone: 4.3 Priority: normal
Severity: normal Version:
Component: Users Keywords: needs-testing, has-patch
Focuses: administration Cc:


Performing a search on the Users admin screen is terrible and infuriating. Only the user_login (username) and user_nicename (sanitised username) fields are searched.

None of these fields are ever searched:

  • First name
  • Last name
  • Nickname
  • Display name

Email addresses are only searched if your search query contains an @ symbol.

On the Users screen in Network Admin, it gets worse. The user needs to be aware of the need to use a * wildcard character at the beginning and/or end of the search term, otherwise the search requires an exact match.

We should default to searching everything, all the time, with filters in place to revert the behaviour for large networks which need to control performance.

Attachments (3)

27304.patch (543 bytes) - added by mordauk 15 months ago.
27304.2.patch (555 bytes) - added by mordauk 7 weeks ago.
27304-tests.patch (1013 bytes) - added by mordauk 7 weeks ago.

Download all attachments as: .zip

Change History (16)

comment:1 @SergeyBiryukov15 months ago

Related: #22309, #26839.

Last edited 15 months ago by SergeyBiryukov (previous) (diff)

comment:2 @mordauk15 months ago

Oh yes please. I've built searches a couple of times for sites that have front-end user directories and have always had to rely on custom queries.

@mordauk15 months ago

comment:3 @mordauk15 months ago

27304.patch sets the fields to be 'user_login', 'user_url', 'user_email', 'user_nicename', 'display_name', instead of just 'user_login', 'user_nicename'.

comment:4 @johnbillion15 months ago

#26839 was marked as a duplicate.

comment:5 @knutsp15 months ago

Please get this in soon.

comment:6 @AskKim15 months ago

Following here since you closed my original ticket. Glad to see you've got a patch for this headache.

comment:7 @johnbillion13 months ago

#18183 was marked as a duplicate.

comment:8 @MathSmath13 months ago

From a usability perspective, I think it's more complicated than just adding nicename and display name to the search. I think we also need first and last name from the usermeta.

On the user management screen, "Name" is one of the primary fields used to identify users. So you'd (reasonably) think it would be a key consideration in search. But the "name" that's listed is a combination of the first_name and last_name usermeta fields (not your display name or nicename).

If I, as a user, see someone listed named "Matt Smith", and I search for "Matt Smith" and get no results, I (understandably) think that search is broken.

I've also run into something that might be an edge case, but is worth mentioning: you're totally allowed to use the @ symbol in your username (or other user fields). So in assuming that anything with an "@" in it should only search the email field is wonky, IMO. But that's how it's currently implemented.

Aside: am I the only person who thinks there are too many "name" concepts in core? Login, nicename and display name in the users table, PLUS first name, last name and nickname stored in usermeta. Are any of these on the road to deprecation?

comment:9 @Lohoris13 months ago

You're not alone @MathSmath, they are definitely too many, when a single field would be enough, besides the username which should be used only to login anyway.

@mordauk7 weeks ago

@mordauk7 weeks ago

comment:10 @mordauk7 weeks ago

  • Keywords needs-testing added

27304.2.patch is a refreshed patch for the src/ version of trunk.

27304-tests.patch adds some unit tests for searching.

comment:11 @johnbillion7 weeks ago

  • Keywords 4.3-early has-patch added; needs-patch removed
  • Milestone changed from Awaiting Review to Future Release

comment:12 @obenland3 weeks ago

  • Owner set to johnbillion
  • Status changed from new to assigned

comment:13 @obenland3 weeks ago

  • Keywords 4.3-early removed
  • Milestone changed from Future Release to 4.3
Note: See TracTickets for help on using tickets.