Cómo obtener todas las capacidades de un rol de usuario existente
¿Cómo puedo obtener TODAS las capacidades de un rol de usuario existente (por ejemplo, Autor)? Lo usaré para duplicar rápidamente un rol de usuario existente, luego crear un nuevo rol y asignar o eliminar capacidades a un nuevo rol personalizado.

Sugiero no modificar los roles y capacidades existentes por defecto, esto podría ahorrarte problemas cuando tengas una gran cantidad de roles y capacidades personalizados en el futuro.
Para responder a tu pregunta, pondré un ejemplo: necesito un nuevo rol/grupo de usuarios que tenga casi los mismos permisos que un Administrador pero que no tenga la capacidad de editar plugins y el tema, para hacerlo:
Digamos que quieres copiar las capacidades existentes del Administrador, hazlo mediante:
$admin_role_set = get_role( 'administrator' )->capabilities;
Puedes crear un nuevo rol de usuario usando add_role, consulta el manual para más detalles. Luego podemos usar la lista de capacidades que obtuvimos en el paso #1 mediante:
$role = 'content_admin'; $display_name = 'Content Admin'; add_role( $role, $display_name, $admin_role_set );
Revisando la lista de Roles y Capacidades del manual, necesitaremos eliminar las capacidades
edit_plugins
yedit_themes
, lo podemos lograr usandoremove_cap()
:remove_cap( 'content_admin', 'edit_plugins' ); remove_cap( 'content_admin', 'edit_themes' );

En el tercer paso que describes, ¿no debería el rol proporcionado al método remove_cap
ser 'content_admin' en lugar de 'editor' si estás continuando el ejemplo de eliminar la capacidad de editar plugins y el tema para el nuevo rol personalizado creado?
