How to assign capabilities to user NOT to User Role

Is there any way to assign custom capabilities to user, I’m NOT talking about User Role.

I’m running a multi author blog where I assigned user role of “Author” to all of my authors. But I need a plugin or function.php snippet that remove a capability(not the role) from USER-ID

Read More

NOTE –

I dont want to assign/revoke capabilities to role ( administrator/author etc) I want to assign/revoke them to specific user using that users ID.

UPDATE – 08/01/2012

I have blog with suppose 50 authors, A author have capabilities to do post, comment, edit, update, send emails, share etc. but when a user misuses one of this feature I want to revoke that capability/capabilities from that user.

But If I decide to using roles I’d have to create so many user roles with different capabilities such as

  • cannot send
  • cannot send & comment
  • cannot send & comment & post
    etc.

Is there a way to revoke a capability from user(not the USER-ROLE)

Related posts

Leave a Reply

3 comments

  1. Finally, I’ve figured out a way to do it using WP_user Class.

    Snippet to add/remove capability to/from specific user –

    //to remove capability from user
    $user = new WP_User( $user_id );
    $user->remove_cap( 'can_email');
    
    //to add capability to user
    $user = new WP_User( $user_id );
    $user->add_cap( 'can_email');
    

    There is special function in capabilities.php in the wp_user class to assign/revoke capability to/from user.

  2. If what you want is to assign capabilities to already existing roles or (already created custom roled) then there is global variables called $wp_roles

    //suppose you have a custom role called 'architect' and you want to add a capability called `can access architect zone`
    global $wp_roles;
    $wp_roles->add_cap( 'architect', 'can_access_architect_zone' );
    //add to default roles
    $wp_roles->add_cap( 'administrator', 'monitor_architect' );