Los roles y capacidades son las bases en la que se basa el sistema de permisos en WordPress. Cuando un usuario inicia sesión, su rol hará que pueda hacer o no ciertas cosas, o que pueda ver o no otras. Nadie espera que un usuario sin loguera tenga acceso a ver pedidos de otro o que un cliente tenga acceso a cambiar el tema. Por daros un par de ejemplos.
De forma breve podríamos resumirlo como que:
Los plugins o el tema luego consultan sobre si un determinado usuario puede hacer algo (una capacidad en concreto) con la función current_user_can( $capacidad ) que nos dirá si el usuario puede tiene derecho a hacer esa capacidad o no. Así de esta forma, orientamos el flujo de programa y damos seguridad a nuestros desarrollos. Por ejemplo, si un usuario no puede crear usuarios, no podrá importarlos, en nuestro plugin para importar y exportar usuarios y clientes.
El caso es que un rol está definido de forma única como tantas otras estructuras en WordPress por el slug. El slug es un identificador único, de tipo cadena, y para que os hagáis una idea es:
Como veis el slug es algo que no se traduce y que al ser un identificador, actúa como clave foránea para hacer relaciones. De esta forma, el objeto usuario lo que guarda es el slug del rol al que está asignado.
Lo que ocurre, es que cuando estás mostrando a un usuario un rol, el usuario espera ver «Administrador» y no «administrator». Si estás haciendo código para WordPress y obtienes los roles de usuario, por ejemplo así:
$user = new WP_User( $order->get_customer_id() ); // estoy recorriendo pedidos en WooCommerce y creo un objeto usuario con el cliente del pedido var_export( $user->roles ); // muestro el array de roles por pantalla var_export( $user->roles[0] ); // muestro el rol del usuario, al usarse solo un rol por usuario normalmente, accederemos a la posición 0 del array
Verás que lo que te devuelve es el slug, así que para obtener el nombre, podéis hacer lo siguiente:
function get_role_name( $role_slug ){ global $wp_roles; return ( isset( $wp_roles->roles[ $role_slug ] ) ) ? $wp_roles->roles[ $role_slug ]['name'] : ''; }
Esta función os devolverá para un slug dado, su nombre asociado. ¿Cómo?
Como los roles son traducibles, podéis usar la función translate_user_role( $nombre_role ) que recibe el nombre del rol y lo devuelve traducido. No probéis a pasarle el slug, porque en este caso espera el nombre del rol.
Nota: Hay una valoración incrustada en esta entrada, por favor, visita esta entrada para valorarla.RedSys aparte de los pagos normales, llamados autorizaciones, acepta una variedad de operaciones: desde autorizaciones…
WooCommerce permite ordenar los productos de una forma nativa, para poder presentar primero los que…
Cada vez que hay una actualización grande del núcleo WordPress, por defecto WordPress te instala…
Una pantalla LCD es una pantalla delgada y hecha de cristal líquido. Se usa en…
De todos los plugins que existen para Gravity Forms, que son numerosos porque la propia…
Un CMS, como WordPress, facilita la creación y gestión de contenido en la web, sin…