Hoy vamos a revisar los permisos de los usuarios dentro del alcance de su complemento. Específicamente, analizaré qué debe usar para determinar quién puede ver los distintos menús de administración de su complemento..
Me encontré con la complejidad de los permisos de usuario al trabajar en una instalación de WordPress en varios sitios. Estábamos alojando entre 15 y 20 sitios web y teníamos aproximadamente 30 complementos instalados. Blogs cada uno tenía usuarios de varios niveles y responsabilidades. Mis empleadores recibirían solicitudes o encontrarían complementos con la funcionalidad que querían ofrecer, y yo dependería de mí instalarlos y configurarlos. Fue entonces cuando me encontré con problemas. A menudo, me encontré modificando complementos para acomodar simplemente los roles de usuario que estábamos usando. El desorden se debió principalmente a las diferentes formas en que WordPress le permite definir quién puede ver y usar su complemento.
Érase una vez, WordPress incorporó "Niveles de usuario". Había 10 niveles, cada uno otorgando más privilegios al usuario que el último. Muy a menudo, el desarrollador se enfoca en un nivel de usuario específico como:
Para aquellos de ustedes que no están familiarizados con las funciones de WordPress, la función add_menu_page se define como:
add_menu_page (я $ page_title, я $ menu_title, я $ capacidad, я $ menu_slug, я $ function, я $ icon_url, я $ positionя);
Este conjunto de códigos en particular está dirigido a nivel de usuario 10, que sería el conjunto de permisos más alto. Si bien es útil en algunas circunstancias, los niveles de usuario no ofrecían tanta flexibilidad como me gustaba. Afortunadamente, cuando se lanzó WordPress 2.0, nos dieron "Funciones y capacidades". Las capacidades reemplazaron los niveles de usuario y en WordPress 3.0, los niveles de usuario se han depreciado.
Con la nueva forma de definir los permisos de los usuarios, hemos adquirido formas adicionales de dirigirnos a los usuarios. El primero es por los propios roles. Usando las mismas funciones que antes, ilustraré cómo se dirige a un usuario por rol.
En esencia, esto no es muy diferente de usar Niveles de Usuario, y en mi situación, eso no fue algo bueno. Con nuestra configuración de sitios múltiples, los roles de administrador solo fueron utilizados por personas internas. El rol más alto que se permitió a cualquiera de los clientes fueron los editores. Pero aún necesitaban poder hacer ciertas cosas dentro de su sitio. Y desafortunadamente, muchos de los complementos con los que me encontré todavía utilizaban los niveles de usuario o los roles para otorgar o denegar el uso de su complemento. Sin embargo, WordPress ha proporcionado una solución mucho más robusta a este problema en cuanto a sus capacidades..
Las capacidades le permiten dirigirse a un usuario en función de lo que pueden hacer en lugar del rol que tienen. Considera el siguiente ejemplo.
Las funciones ahora prueban si un usuario puede subir o no archivos. Si las capacidades no se han alterado, esto permite que el menú sea visible y que el código se ejecute para superadministradores, administradores, editores y autores. Esta es una solución mucho mejor, ya que se pueden agregar o eliminar capacidades individuales de los roles en las funciones de tema.
Ahora, mientras esta es la mejor solución para muchas circunstancias, me gusta ir un paso más allá. Cuando estoy desarrollando un complemento para funciones no administrativas, como una galería o un complemento de testimonios, prefiero conceder acceso al usuario en función de una capacidad personalizada creada para el complemento. He dado un ejemplo de cómo hacer esto a continuación.
Como puede ver, estamos agregando una capacidad llamada "my_plugin_cap" a la función de editor. Luego agregamos una página de menú que es visible para todos los usuarios con esta capacidad. Lo bueno es que en el complemento, puede agregar la capacidad a los usuarios adecuados, y si el administrador quiere dar acceso a otros roles, puede hacerlo agregando la capacidad él mismo a través de las funciones del tema. En mi caso, eso significa que ya no necesito editar los complementos y me siento libre de actualizarlos sin preocuparme por perder los cambios que hice..
Espero que este consejo te haya sido útil. Déjeme saber si tiene alguna pregunta o inquietud en los comentarios a continuación. Feliz programacion de plugins!