[wp-trac] [WordPress Trac] #16841: Manually created user roles not showing in author dropdown regardless of assigned capabilities

WordPress Trac noreply at wordpress.org
Wed Oct 27 18:42:27 UTC 2021


#16841: Manually created user roles not showing in author dropdown regardless of
assigned capabilities
--------------------------------------+-------------------------
 Reporter:  10sexyapples              |       Owner:  swissspidy
     Type:  defect (bug)              |      Status:  closed
 Priority:  normal                    |   Milestone:  5.9
Component:  Role/Capability           |     Version:  3.1
 Severity:  normal                    |  Resolution:  fixed
 Keywords:  has-patch has-unit-tests  |     Focuses:
--------------------------------------+-------------------------
Changes (by swissspidy):

 * status:  assigned => closed
 * resolution:   => fixed


Comment:

 In [changeset:"51943" 51943]:
 {{{
 #!CommitTicketReference repository="" revision="51943"
 Role/Capability: Add support for capability queries in `WP_User_Query`.

 Similar to the existing `role`/`role__in`/`role__not_in` query arguments,
 this adds support for three new query arguments in `WP_User_Query`:

 * `capability`
 * `capability__in`
 * `capability__not_in`

 These can be used to fetch users with (or without) a specific set of
 capabilities, for example to get all users
 with the capability to edit a certain post type.

 Under the hood, this will check all existing roles on the site and perform
 a `LIKE` query against the `capabilities` user meta field to find:

 * all users with a role that has this capability
 * all users with the capability being assigned directly

 Note: In WordPress, not all capabilities are stored in the database.
 Capabilities can also be modified using filters like `map_meta_cap`. These
 new query arguments do NOT work for such capabilities.

 The prime use case for capability queries is to get all "authors", i.e.
 users with the capability to edit a certain post type.

 Until now, `'who' => 'authors'` was used for this, which relies on user
 levels. However, user levels were deprecated a long time ago and thus
 never added to custom roles. This led to constant frustration due to users
 with custom roles missing from places like author dropdowns.

 This updates any usage of `'who' => 'authors'` in core to use capability
 queries instead.

 Subsequently, `'who' => 'authors'` queries are being **deprecated** in
 favor of these new query arguments.

 Also adds a new `capabilities` parameter (mapping to `capability__in` in
 `WP_User_Query`) to the REST API users controller.

 Also updates `twentyfourteen_list_authors()` in Twenty Fourteen to make
 use of this new functionality, adding a new
 `twentyfourteen_list_authors_query_args` filter to make it easier to
 override this behavior.

 Props scribu, lgladdly, boonebgorges, spacedmonkey, peterwilsoncc,
 SergeyBiryukov, swissspidy.
 Fixes #16841.
 }}}

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/16841#comment:80>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list