• Ir a navegación principal
  • Ir al contenido principal
  • Ir a la barra lateral primaria
  • Ir al pie de página

Dani Sánchez - Gestionatuweb

Desarrollador web freelance - Dani Sánchez Gestionatuweb

  • ¿Eres agencia?
  • WordPress
    • Mantenimiento
    • Desarrollo
    • Soporte técnico
  • Cursos
  • Porfolio
  • Blog
  • Contacto
  • Solicita Presupuesto
Estás aquí: Inicio / Publicaciones / Cómo crear roles personalizados en WordPress (sin plugins)

Publicaciones, Tutoriales, Wordpress / 21 de noviembre de 2018

Cómo crear roles personalizados en WordPress (sin plugins)

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: Las capacidades añadidas a un rol se quedan grabadas en la base de datos y aunque eliminemos la funcion capacidades_cliente(), ese rol seguirá disfrutando de las capacidades otorgadas.

Si queremos eliminar una capacidad determinada a un rol, usamos remove_cap(‘capacidad’, true), por ejemplo si queremos quitar la capaidad 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);

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.

Archivado en:Publicaciones, Tutoriales, Wordpress Etiquetado con:desarrollo web, programación web, publicaciones, tutoriales, wordpress

Interacciones con los lectores

Este artículo puede contener código que podría no funcionar correctamente en tu versión de WordPress o causar incompatibilidad con tu plantilla o plugins. Úsalo bajo tu responsabilidad y haz siempre copia de tus archivos antes de modificarlos.

Comentarios

  1. Ricardo Martinez dice

    22 de septiembre de 2020 en 01:55

    hola buenas tardes, cree un perfil super administrador, y active todas los Capability que estan, y creo un usuario con el perfil de super administrador, pero no puedo editar a los administradores, si le quiero cambiar la contraseña, no me permite en usuarios no me muestran los administradores… que le puedo agregar a la funcion ?? para que pueda editar a los administradores

    Responder

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

  Acepto la política de privacidad

Barra lateral primaria

Daniel Sánchez

@danisanchez82
t.me/gestionatuweb

Buscar en la web

Entradas recientes

  • Adiós WhatsApp…
  • Configuración de WP Fastest Cache
  • Cómo añadir un enlace personalizado en el menú admin de WordPress
  • Hooks de Genesis Framework (init, header y framework) – Parte 1
  • Añade el soporte de Genesis Framework para tus Custom Post

Categorías

  • Actualidad
  • Destacado
  • Divi
  • Drupal
  • Elementor
  • Genesis
  • Joomla!
  • Linux
  • Publicaciones
  • Tutoriales
  • WooCommerce
  • Wordpress

Comentarios recientes

  • Carlos en Crear un WebView con Android Studio para cargar una web en una APP Android
  • william maffiold en Instalar LAMP y phpMyAdmin en MX Linux 19
  • dani en Divi, diseñar una plantilla predeterminada para cargar Custom Posts
  • dani en Subir un WordPress terminado de tu ordenador (local) al servidor final (hosting)
  • Carlos en Divi, diseñar una plantilla predeterminada para cargar Custom Posts

Hosting de confianza

Footer

Buscar en la web

  • Inicio
  • Agencias
  • Mantenimiento WordPress
  • Desarrollo WordPress
  • Soporte técnico WordPress
  • Cursos
  • Portfolio
  • Blog
  • Contacto
  • Política de privacidad

Mis redes

  • Facebook
  • LinkedIn
  • Twitter
  • YouTube

© 2016–2021 Gestionatuweb · Programado con Genesis Framework · Iniciar sesión

Utilizo cookies para obtener datos estadísticos sobre el uso de mi sitio web y personalizar la publicidad (no intrusiva) del blog según tus intereses. En ningún caso estas cookies te identifican como persona, solo a tu dispositivo en la Red. Aceptando el uso de cookies me ayudarás a mantenener el blog gracias a la publicidad y podré mejorar la experiencia de uso gracias a la analítica web. Puedes navegar por mi sitio web sin que se instale ninguna de estas cookies, aunque este mensaje permanecerá visible en todo momento.AceptoPolítica de privacidad