Cómo crear roles personalizados en WordPress

Crear roles personalizados

En WordPress existen 5 roles predefinidos que, en función de los permisos y sus capacidades para con el Dashboard, podemos ordenar en:

  • Suscriptor (Subscriber): No puede crear ningún tipo de contenido pero puede acceder a zonas o contenidos, programados previamente, a los que no pueda acceder un usuario Público.
  • Colaborador (Contributor): Puede crear sus propias entradas aunque estas quedan en estado pendiente de publicación hasta que las apruebe un Editor o Administrador.
  • Autor (Author): Puede publicar, editar y eliminar sus propias entradas pero no las de otro usuario.
  • Editor (Editor): Puede publicar, editar y eliminar cualquier entrada, tanto propia como de otros usuarios. Además puede crear, editar y eliminar páginas.
  • Administrador (Administrator): Puede gestionar cualquier contenido o configuración del sitio web.
  • Super Administrador (Super Admin): En proyectos Multi-Sitio puede crear y eliminar nuevos proyectos, administrar redes, administrar usuarios de red, etc.

Pero por si estos roles se nos quedasen cortos, podemos añadir tantos roles queramos con las capacidades específicas que necesitemos.

Lo primero será consultar las capacidades que tenemos a nuestra disposición para otorgar a cada uno de los roles que creemos:

CapabilitySuper AdminAdministratorEditorAuthorContributorSubscriber
create_sitesY
delete_sitesY
manage_networkY
manage_sitesY
manage_network_usersY
manage_network_pluginsY
manage_network_themesY
manage_network_optionsY
upload_pluginsY
upload_themesY
upgrade_networkY
setup_networkY
CapabilitySuper AdminAdministratorEditorAuthorContributorSubscriber
activate_pluginsYY
(single site or
enabled by network setting)
create_usersYY (single site)
delete_pluginsYY (single site)
delete_themesYY (single site)
delete_usersYY (single site)
edit_filesYY (single site)
edit_pluginsYY (single site)
edit_theme_optionsYY
edit_themesYY (single site)
edit_usersYY (single site)
exportYY
importYY
CapabilitySuper AdminAdministratorEditorAuthorContributorSubscriber
install_pluginsYY (single site)
install_themesYY (single site)
list_usersYY
manage_optionsYY
promote_usersYY
remove_usersYY
switch_themesYY
update_coreYY (single site)
update_pluginsYY (single site)
update_themesYY (single site)
edit_dashboardYY
customizeYY
delete_siteYY
CapabilitySuper AdminAdministratorEditorAuthorContributorSubscriber
moderate_commentsYYY
manage_categoriesYYY
manage_linksYYY
edit_others_postsYYY
edit_pagesYYY
edit_others_pagesYYY
edit_published_pagesYYY
publish_pagesYYY
delete_pagesYYY
delete_others_pagesYYY
delete_published_pagesYYY
delete_others_postsYYY
delete_private_postsYYY
edit_private_postsYYY
read_private_postsYYY
delete_private_pagesYYY
edit_private_pagesYYY
read_private_pagesYYY
unfiltered_htmlYY (single site)Y (single site)
CapabilitySuper AdminAdministratorEditorAuthorContributorSubscriber
edit_published_postsYYYY
upload_filesYYYY
publish_postsYYYY
delete_published_postsYYYY
edit_postsYYYYY
delete_postsYYYYY
CapabilitySuper AdminAdministratorEditorAuthorContributorSubscriber
readYYYYYY

Para crear un nuevo rol, insertamos el siguiente código en el archivo de funciones del tema activo (functions.php) o en nuestro propio plugin de funciones. Vamos a crear por ejemplo, un rol llamado Cliente:

$resultado = add_role(
    'cliente',
    __( 'Cliente' ),
    array(
        'read'         => true,  // true allows this capability
        'edit_posts'   => false,
        'delete_posts' => false,
    )
);

En el array añadimos las principales capacidades por defecto:

  • read (lectura como verdarero).
  • edit_posts (editar entradas como falso).
  • delete_posts (borrar entradas como falso).

A continuación añadimos las capacidades extras para el nuevo rol:

//Actualizar capacidades Cliente
function capacidades_cliente(){
    $role = get_role('cliente');
    $role->add_cap('publish_posts', true);
    $role->add_cap('edit_posts', true);
    $role->add_cap('delete_posts', true);
}
add_action('init', 'capacidades_cliente', 11);

Esta función añade al Rol Cliente las capacidades para publicar entradas, editarlas y eliminarlas, pero solamente sus propias entradas, para afectar a las entradas de otros usuarios habría que usar la capacidades «publish_others_posts», «edit_others_posts» y «delete_others_posts».

A TENER EN CUENTA: Tanto la creación de nuevos roles con add_role(), como las capacidades añadidas, quedan grabadas en la base de datos y aunque eliminemos las funciones, permanecerán activas en el sitio. Si queremos eliminar un rol o una capacidad determinada, usamos remove_role() y remove_cap(‘capacidad’, true), por ejemplo si queremos quitar la capacidad de eliminar entradas, crearíamos la función:

//Eliminar capacidades Cliente
function eliminar_capacidades_cliente(){
   $role = remove_cap('delete_posts', true);
}
add_action('init', 'eliminar_capacidades_cliente', 11);

O para eliminar completamente el rol:

//Eliminar rol Cliente
$resultado = remove_role('cliente');

Y una vez que se ejecute por primera vez, la capacidad quedará eliminada de la base de datos.

Espero que este post os sirva para sacar más partido a vuestros usuarios, definiendo exactamente aquellas funciones o permisos que queráis otorgarles.

Monedas / Currency

Hola, chatea en Whatsapp

Elige uno de nuestros asesores de ventas.

Por lo general respondemos en momento. Gracias

Imprenta Mayorista

Ventas en Lima y Perú

Imprenta Mayorista

Ventas en Lima y Perú

WordPress y WooCommerce

Soporte Web y Plugins

WordPress y WooCommerce

Soporte Web y Plugins

Hosting y Dominio

Informes y Soporte

Hosting y Dominio

Informes y Soporte

0
    0
    Mi Carrito
    Empecemos a comprar y a llenar este carrito