WordPress.org

Los roles y las capacidades son dos aspectos importantes de WordPress que permiten controlar los privilegios de los usuarios.

WordPress almacena los Roles y sus Capacidades en la tabla options bajo la clave user_roles.

Roles #Roles

Un rol define un conjunto de capacidades para un usuario. Por ejemplo, lo que el usuario puede ver y hacer en su dashboard.

Por defecto, WordPress tiene seis roles:

  • Super Admin
  • Administrador
  • Editor
  • Autor
  • Contribuyente
  • Suscriptor
  • Se pueden añadir más roles y eliminar los roles por defecto.

    Añadir Roles #Añadir Roles

    Añadir nuevos roles y asignarles capacidades con add_role().

    function wporg_simple_role() {add_role('simple_role','Simple Role',array('read' => true,'edit_posts' => true,'upload_files' => true,),);}// Add the simple_role.add_action( 'init', 'wporg_simple_role' );

    Expandir el código fuente completoColapsar el código fuente completo

    Alerta:
    ¡Después de la primera llamada a add_role(), el rol y sus capacidades se almacenarán en la base de datos!

    Las llamadas secuenciales no harán nada: incluyendo la alteración de la lista de capacidades, que podría no ser el comportamiento que estás esperando.

    Nota:
    Para alterar la lista de capacidades de forma masiva: elimina el rol usando remove_role() y añádelo de nuevo usando add_role() con las nuevas capacidades.

    Asegúrate de hacerlo sólo si las capacidades difieren de lo que esperas (es decir, condiciona esto) o degradarás el rendimiento considerablemente!

    Top

    Quitando Roles #Removing Roles

    Quita roles con remove_role().

    function wporg_simple_role_remove() {remove_role( 'simple_role' );}// Remove the simple_role.add_action( 'init', 'wporg_simple_role_remove' );
    Alerta:
    Después de la primera llamada a remove_role(), ¡el rol y sus capacidades serán eliminados de la base de datos!

    Las llamadas secuenciales no harán nada.

    Nota:
    Si estás eliminando los roles por defecto:

    • ¡No aconsejamos eliminar los roles de Administrador y Super Administrador!
    • Asegúrate de mantener el código en tu plugin/tema ya que futuras actualizaciones de WordPress pueden añadir estos roles de nuevo.
    • Ejecuta
      update_option('default_role', YOUR_NEW_DEFAULT_ROLE)
      ya que estarás eliminando subscriber que es el rol por defecto de WP.

    Top

    Capacidades #Capabilities

    Las capacidades definen lo que un rol puede y no puede hacer: editar posts, publicar posts, etc.

    Nota:
    Los tipos de post personalizados pueden requerir un cierto conjunto de Capacidades.

    Top

    Añadir Capacidades #Adding Capabilities

    Puedes definir nuevas capacidades para un rol.

    Utiliza get_role() para obtener el objeto rol, luego utiliza el método add_cap() de ese objeto para añadir una nueva capacidad.

    function wporg_simple_role_caps() {// Gets the simple_role role object.$role = get_role( 'simple_role' );// Add a new capability.$role->add_cap( 'edit_others_posts', true );}// Add simple_role capabilities, priority must be after the initial role definition.add_action( 'init', 'wporg_simple_role_caps', 11 );
    Nota:
    Es posible añadir capacidades personalizadas a cualquier rol.

    Bajo el administrador por defecto de WordPress, no tendrían ningún efecto, pero se pueden utilizar para la pantalla de administración personalizada y las áreas del front-end.

    Top

    Eliminación de capacidades #Removing Capabilities

    Puedes eliminar capacidades de un rol.

    La implementación es similar a la de Añadir Capacidades con la diferencia de utilizar el método remove_cap() para el objeto rol.

    Top

    Usando Roles y Capacidades #Usando Roles y Capacidades

    Top

    Obtener Rol #Obtener Rol

    Obtener el objeto rol incluyendo todas sus capacidades con get_role().

    get_role( $role );

    Top

    User Can #User Can

    Comprueba si un usuario tiene un rol o capacidad especificada con user_can().

    user_can( $user, $capability );
    Atención:
    Hay un tercer argumento no documentado, $args, que puede incluir el objeto contra el que se debe realizar la prueba.

    Por ejemplo, pasar un ID de post para probar la capacidad de ese post específico.

    Top

    El usuario actual puede #El usuario actual puede

    current_user_can() es una función que envuelve a user_can() utilizando el objeto usuario actual como el parámetro $user.

    Usa esto en escenarios donde las áreas de back-end y front-end deben requerir un cierto nivel de privilegios para acceder y/o modificar.

    current_user_can( $capability );

    Superior

    Ejemplo #Ejemplo

    Aquí tienes un ejemplo práctico para añadir un enlace Editar en el en un archivo de plantilla si el usuario tiene la capacidad adecuada:

    if ( current_user_can( 'edit_posts' ) ) {edit_post_link( esc_html__( 'Edit', 'wporg' ), '<p>', '</p>' );}

    Top

    Multisite #Multisite

    La función current_user_can_for_blog() se utiliza para comprobar si el usuario actual tiene un determinado rol o capacidad en un blog específico.

    current_user_can_for_blog( $blog_id, $capability );

    Top

Deja una respuesta

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