WP_Role::add_cap( string $cap, bool $grant = true )

Assign role a capability.


Description Description


Parameters Parameters

$cap

(string) (Required) Capability name.

$grant

(bool) (Optional) Whether role has capability privilege.

Default value: true


Top ↑

Source Source

File: wp-includes/class-wp-role.php

	public function add_cap( $cap, $grant = true ) {
		$this->capabilities[$cap] = $grant;
		wp_roles()->add_cap( $this->name, $cap, $grant );
	}

Top ↑

Changelog Changelog

Changelog
Version Description
2.0.0 Introduced.


Top ↑

User Contributed Notes User Contributed Notes

  1. Skip to note content
    Contributed by Codex

    Example

    function add_theme_caps() {
    	// gets the author role
    	$role = get_role( 'author' );
    
    	// This only works, because it accesses the class instance.
    	// would allow the author to edit others' posts for current theme only
    	$role->add_cap( 'edit_others_posts' ); 
    }
    add_action( 'admin_init', 'add_theme_caps');
    

    NB: This setting is saved to the database, so it might be better to run this on theme/plugin activation

    function add_theme_caps(){
    	 global $pagenow;
    
    	 if ( 'themes.php' == $pagenow && isset( $_GET['activated'] ) ){ // Test if theme is active
    		 // Theme is active
    		 // gets the author role
    		 $role = get_role( 'author' );
    
    		 // This only works, because it accesses the class instance.
    		 // would allow the author to edit others' posts for current theme only
    		 $role->add_cap( 'edit_others_posts' ); 
    	 } else {
    		 // Theme is deactivated
    		 // Remove the capacity when theme is deactivate
    		 $role->remove_cap( 'edit_others_posts' ); 
    	 }
    }
    add_action( 'load-themes.php', 'add_theme_caps' );
    

    To add capability to specific user :

    $user = new WP_User( $user_id );
    $user->add_cap( 'can_edit_posts' );
    

You must log in before being able to contribute a note or feedback.