Skip to content

Passing a role name to wp user remove-cap should probably return an error #98

Closed

Description

@johnbillion

At the user level, WordPress internally treats roles and capabilities the same. They're all stored in the wp_capabilities user meta field. This is unfortunate.

This means that wp user remove-cap <user> <role> works, which can have unexpected consequences if, for example, a script blindly loops over capabilities in order to remove them from a user and one of the capabilities is a role name.

I think if an attempt is made to remove a capability from a user that matches a role name, it should return an error along with recommending that wp user remove-role is used instead.

Activity

  1. johnbillion commented on Oct 6, 2017

    @johnbillion
    ContributorAuthor

    It's worth noting that WP_User::remove_cap( <role> ) also suffers from the same problem. I'm not sure on WP-CLI's policy of improving upon core's APIs in this way.

  2. danielbachhuber commented on Oct 6, 2017

    @danielbachhuber
    Member

    It's worth noting that WP_User::remove_cap( <role> ) also suffers from the same problem. I'm not sure on WP-CLI's policy of improving upon core's APIs in this way.

    I'm in support of WP-CLI improving upon core's APIs, as long as it's not in opposition to, or diverge too much from, core behavior.

  3. schlessera commented on Oct 27, 2017

    @schlessera
    Member

    I think it might make sense to skip mismatches with a warning, with a --force flag to just execute indiscriminately.

    However, that would be a BC break...

  4. added a commit that references this issue on Apr 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions