La funzione add_role( $role, $display_name, $capabilities ) definisce e aggiunge ruoli custom all’ambiente WP, che possono essere utilizzati in alternativa e ad integrazione dei ruoli predefiniti.

La  creazione di un nuovo “ruolo” con add_role() va eseguita alla registrazione del plugin:

    function add_CRM_role(){
        $CRM_client = add_role(
        'CRM_client',
        __( 'CRM Client' )
        );
        $CRM_agent=add_role(
        'CRM_agent',
        __( 'CRM Agent' )
        );
        
        $role = get_role( 'CRM_client' );
        $role->add_cap( 'read' );
        $role->add_cap( 'read_private_pages' );
        
        $role1 = get_role( 'CRM_agent' );   
        $role1->add_cap( 'read' );
        $role1->add_cap( 'read_private_pages' );

    }
    register_activation_hook( __FILE__, 'add_CRM_role' );

oppure in “init” se usato nel file functions.php del tema o del child theme:

function SOFT_add_role(){
    $SoftSmall = add_role(
    'soft_small',
    'Small' ,
    array(
        'read'         => true,
        'edit_posts'   => true,
        'publish_posts'=>false
        )
    );
 
    $role = get_role( 'soft_small' );
    $role->add_cap( 'read_private_pages' );
    $role->add_cap( 'upload_files' );
}

add_action('init','SOFT_add_role');

Ulteriori esempi di utilizzo di add_role() e get_role() si possono trovare in questo articolo