Cómo Crear Funciones De Usuario Personalizados En WordPress

wordpress codificacionWordPress es un excelente gestor de contenido que brinda una serie de funciones bastante útiles para tener un sitio o aplicación web robusto. Una de las mas grandes características que puede encontrar un desarrollador en este CMS, es el uso y la personalización de roles de usuario.

Los roles de usuario son algo que se implementó desde la versión 2.0, y de forma predeterminada se puede encontrar los siguientes roles de usuario:

  • Administrador: Acceso total a las características y funciones dentro del panel de control y el sitio en general.
  • Editor: alguien que solo puede publicar y administrar los mensajes de todos los usuarios.
  • Autor: alguien que pueda publicar y administrar sus propios mensajes.
  • Colaborador: alguien que puede escribir y gestionar sus propios mensajes, pero no puede publicarlos.
  • Suscriptor: alguien que sólo puede gestionar su perfil.

¿Por Qué Usar Un Rol Personalizado En WordPress?

La mayoría de las veces, los roles predeterminados son los básicos y necesarios para la mayoría de proyectos; pero, en el caso de que se desee brinda información personalizada, o restringir el acceso a determinadas secciones del sitio, crear un rol personalizado es lo ideal.

Funciones Básicas De WordPress

Para gestionar las funciones y capacidades de manera eficaz, existen cinco funciones muy sencillas:

  • add_role(): Permite agregar una función personalizada.
  • remove_role(): Permite eliminar una función personalizada.
  • add_cap(): Permite agregar una capacidad personalizada a un role.
  • remove_cap(): Permite eliminar una capacidad personalizada de un role.
  • get_role(): Obtiene información sobre un role, así como las capacidades asociadas con este role.

Para el ejemplo, sólo vamos a utilizar la función add_role () para este artículo, vamos a crear una función de usuario personalizada para nuestros clientes ficticios.

Definir El Rol De Usuario

Antes de comenzar a codificar, debemos de armar nuestro propio plan. Tenemos que asignar un nombre al rol de usuario. Vamos a mantenerlo simple y llamamos a la función de usuario ‘Client’.

Vamos a restringir el uso del rol ‘Client’ a las siguientes características:

  • Crear mensajes
  • Editar mensajes
  • Edite otros artículos
  • Administrar categorías
  • Editar páginas

Igualmente importante, es lo que no queremos que sean capaces de hacer:

  • Edición de temas
  • Agregar o quitar Plugins
  • Actualización del núcleo

Escribiendo El Código

Vamos a poner este código en el archivo functions.php del tema activo. Así que vamos a empezar por la adición del siguiente código al archivo:

[php]// Add a custom user role

$result = add_role( ‘client’, __(
‘Client’ ),
array( ) );[/php]

Mediante la adición del anterior bloque de código, se ha creado técnicamente una nueva función de usuario. El problema es que este rol de usuario no tiene ninguna función asignada. Así que el siguiente paso es agregar la funcionalidad que habíamos identificado previamente en nuestros requisitos previos. Para esto añadiremos los permisos a un array, y el código estará justo debajo del anterior código del rol:

[php]// Add a custom user role

$result = add_role( ‘client’, __(

‘Client’ ),

array(

‘read’ => true, // true allows this capability
‘edit_posts’ => true, // Allows user to edit their own posts
‘edit_pages’ => true, // Allows user to edit pages
‘edit_others_posts’ => true, // Allows user to edit others posts not just their own
‘create_posts’ => true, // Allows user to create new posts
‘manage_categories’ => true, // Allows user to manage post categories
‘publish_posts’ => true, // Allows the user to publish, otherwise posts stays in draft mode
)
);[/php]

Eso nos dará la funcionalidad que desea que el cliente tenga, pero todavía tenemos que restringirlos de hacer cosas que podrían vulnerar el sitio. Así que vamos a agregarlos ;)

[php]// Add a custom user role

$result = add_role( ‘client’, __(

‘Client’ ),

array(

‘read’ => true, // true allows this capability
‘edit_posts’ => true, // Allows user to edit their own posts
‘edit_pages’ => true, // Allows user to edit pages
‘edit_others_posts’ => true, // Allows user to edit others posts not just their own
‘create_posts’ => true, // Allows user to create new posts
‘manage_categories’ => true, // Allows user to manage post categories
‘publish_posts’ => true, // Allows the user to publish, otherwise posts stays in draft mode
‘edit_themes’ => false, // false denies this capability. User can’t edit your theme
‘install_plugins’ => false, // User cant add new plugins
‘update_plugin’ => false, // User can’t update any plugins
‘update_core’ => false // user cant perform core updates
));[/php]

¿Cómo Determinar Si El Rol Esta Configurado Correctamente?

permisos personalilzados de archivosPodemos crear un nuevo usuario con el nuevo rol creado, y una vez hecho esto, puedes ingresar con los datos del nuevo usuario, y comprobar si realmente cuenta con las restricciones de las funciones en el panel de administración.