Funciones y capacidades de WordPress Funciones de nota

Este es un tutorial de cuatro partes que cubre el tema de usuarios, roles y capacidades de WordPress. La serie cubrirá la arquitectura y el diseño de roles de usuario en WordPress; resalte las funciones más importantes para interactuar con los usuarios y administrar roles y capacidades; y en el último tutorial, vamos a construir un ejemplo de la vida real que demuestra la utilidad de esta API..


Introducción

En la primera parte, cubrimos solo la teoría sobre los usuarios, roles y capacidades. Esta parte se centrará en el código y las funciones que WordPress ofrece para interactuar con este sistema. Obviamente, no vamos a cubrir todas las funciones de WordPress, pero intenté repasar las más importantes y útiles..

Como los cambios y actualizaciones de WordPress se envían con frecuencia, siempre debe volver a la documentación del Codex y verificar si algo cambió. Proporcionaré un enlace a la página del Codex para cada función que cubriremos aquí para su conveniencia..


Gestionando Usuarios

Los usuarios en WordPress son diferentes de los visitantes. Son personas que han registrado una cuenta con un nombre de usuario único en su sitio. Puede habilitar el registro de nuevos usuarios en su sitio desde Configuración -> Panel general marcando la casilla "Membresía -> Cualquiera puede registrarse".

En esta sección, cubriremos algunas de las funciones útiles para interactuar con usuarios registrados en WordPress. La nueva configuración de WordPress debe tener al menos un usuario: el que configuró la instalación de WordPress. En versiones anteriores, este era el "admin"; Sin embargo, ahora puede elegir el nombre de usuario al instalar WordPress..

  1. Creando, actualizando y borrando usuarios

    WordPress tiene una interfaz visual para crear, actualizar y eliminar usuarios. Deberías usarlo la mayor parte del tiempo. Sin embargo, hay casos en los que desea hacer eso con la programación: por ejemplo, al importar usuarios desde otro marco o si está creando su propio formulario de registro personalizado.

    WordPress tiene cuatro funciones para realizar estas actividades:

    • wp_create_user
    • wp_insert_user
    • wp_update_user
    • wp_delete_user

    Al principio, puede ser un poco confuso. Todas las primeras 3 funciones pueden crear nuevos usuarios, y ambas "wp_insert_user"y"wp_update_user"puede actualizar los usuarios existentes. Pero hay una razón para eso.

    Hay dos formas de crear un nuevo usuario:

    1. Al pasar solo la información mínima requerida para crear el usuario (nombre de usuario, contraseña y correo electrónico). En este caso, debe utilizar el wp_create_user función.
    2. Al pasar una matriz de los datos del usuario. En este caso, debe utilizar el wp_insert_user función. Esto le da la capacidad de configurar cualquier dato de usuario para su usuario antes de agregarlo.

    Para actualizar un usuario existente, debes usar wp_update_user. Es posible usar el mismo. wp_insert_user; sin embargo, esta función no tiene hash de la contraseña del usuario y, por lo tanto, puede fallar. Por lo tanto, es mejor usar la función correcta para el trabajo correcto.

    A continuación, describo un fragmento de muestra de uso para cada función. Sin embargo, debe consultar el Codex si está buscando documentación más detallada..

    Uso de wp_create_user

     add_action ('init', 'wpttuts_createuser'); function wpttuts_createuser () // Datos de usuario $ user_name = 'new_user'; $ user_password = 'new_user_password'; $ user_email = '[email protected]'; // Crear el usuario $ user_id = wp_create_user ($ user_name, $ user_password, $ user_email); // Comprueba si la función devolvió un objeto de error WP if (is_wp_error ($ user_id)) $ user_id-> get_error_message ();  else // usuario creado exitosamente

    Uso de wp_insert_user

     add_action ('init', 'wpttuts_insertuser'); function wpttuts_insertuser () // Prepare los datos de usuario $ user_data = array ('user_login' => 'new_user', 'user_password' => 'new_user_password "user_email' => '[email protected]', 'role' => 'administrador'; // usuario creado exitosamente

    Uso de wp_update_user

     add_action ('init', 'wpttuts_updateuser'); function wpttuts_updateuser () // Prepare los datos del usuario $ user_data = array ('user_id' => 3, 'description' => 'Nuestro nuevo usuario creado'); // Actualiza la descripción del usuario $ user_id = wp_update_user ($ user_data); // Comprueba si la función devolvió un objeto de error WP if (is_wp_error ($ user_id)) $ user_id-> get_error_message ();  else // usuario actualizado exitosamente

    Uso de wp_delete_user

     add_action ('init', 'wpttuts_deleteuser'); función wpttuts_deleteuser () if (wp_delete_user (3, 1)) // usuario eliminado con éxito
  2. Obtención de la lista de usuarios

    WordPress solía ofrecer dos funciones para recuperar la lista de usuarios, por lo que no tiene que consultar la base de datos. La primera función "get_users_of_blog ()"devuelve una matriz de todos los usuarios en el blog actual (o puede pasar una ID de blog si está ejecutando una instalación MultiSite). La segunda función"get_users ()"devuelve una lista de usuarios basada en los argumentos pasados ​​a la función. Esto elimina la necesidad de hacer consultas SQL personalizadas a la base de datos.

    Ambas funciones devuelven una matriz de objetos de datos de usuario. (Excepto por get_users () donde puede especificar que se devuelva solo un campo en particular.) El objeto de usuario se cubrirá con más detalles en la siguiente sección.

    Los "get_users_of_blog ()"la función ahora está en desuso, por lo que ya no debería usarla, y usarla"get_users ()"en su lugar. El siguiente es un ejemplo de uso para"get_users ()".

     add_action ('init', 'wpttuts_getusers'); función wpttuts_getusers () // Criterios de consulta $ args = array ('orderby' => 'url', 'order' => 'ASC'); // Obtener la matriz de usuarios $ users = get_users ($ args); // Recorra los usuarios y muestre su página de inicio para cada ($ usuarios como $ usuario) echo 'user_url. '">'. $ user-> user_url. '';

    El argumento de la función acepta más opciones. Puede encontrar la lista completa de estas opciones en la página de la función Codex.

    • blog_id Sólo es útil para instalaciones multisitio. El valor predeterminado es el ID del blog actual.
    • papel Limite los usuarios devueltos a la función especificada.
    • incluir Una matriz de ID de usuario para incluir en la consulta devuelta.
    • excluir Una matriz de ID de usuario para excluir de la consulta devuelta.
  3. los WP_User Clase

    los WP_User La clase permite acceder a propiedades, capacidades y métodos relativos a un usuario en particular. Para crear una nueva instancia de la clase, necesita el ID de usuario o el nombre de usuario; y si está en una instalación multisitio, también necesitará la ID del blog.

    Puede iniciar la clase para un usuario en particular y volcar el contenido de la clase. Esto mostrará solo las propiedades, pero aún así es útil si desea leer dentro de la clase de usuario.

     add_action ('init', 'wptuts_wpuserclass'); función wptuts_wpuserclass () $ usuario = nuevo WP_User (1); var_dump ($ usuario); 

    El siguiente es un resumen de las propiedades y métodos de la WP_User clase:

    WP_User Propiedades

    • datos (Objeto con los detalles del usuario, como el nombre de usuario, contraseña, URL ...)
    • CARNÉ DE IDENTIDAD (Entero El ID de usuario)
    • tapas (Formación)
    • roles (Formación Roles asignados al usuario)
    • cap_key (Cuerda)
    • allcaps (Formación Todas las capacidades que tiene el usuario)
    • filtrar (Nulo)

    WP_User Métodos Públicos

    • get_role_caps () Establece los roles y propiedades allcaps.
    • add_role () Agregar un rol al usuario.
    • remove_role () Eliminar un rol del usuario.
    • set_role () Establecer un rol para el usuario. Esto eliminará los roles previamente asignados..
    • add_cap () Añadir capacidad al usuario.
    • quite la tapa() Eliminar la capacidad del usuario.
    • remove_all_caps () Eliminar todas las capacidades del usuario..
    • has_cap () Comprueba si el usuario tiene una capacidad o nombre de rol.
  4. Metadatos de los usuarios

    Como se señaló en el artículo anterior, los metadatos de los usuarios son datos sobre el usuario guardado en el wp_usermeta mesa. Se guarda como valores clave / par, y el valor meta puede ser cualquier tipo de datos. El par no es necesariamente único. Puedes almacenar varios pares con la misma llave..

    Añadiendo un metadato de usuario

    La función add_user_meta () Agrega nuevos metadatos de usuario. La función devuelve verdadero cuando los datos se agregan con éxito y falso si falla. Como se mencionó anteriormente, es posible agregar muchos valores meta con la misma clave. Si desea que las claves de metadatos sean únicas, establezca el cuarto argumento en verdadero.

     add_action ('init', 'wptuts_addusermeta'); función wptuts_addusermeta () // Agregue múltiples valores meta con la misma clave meta add_user_meta (1, 'marcadores', 'http://site1.com', falso); add_user_meta (1, 'marcadores', 'http://site2.com', falso); add_user_meta (1, 'marcadores', 'http://site3.com', falso); 

    Recuperando un metadato de usuario

    La función get_user_meta () devuelve el valor meta basado en el ID de usuario y la clave meta que se le pasa.

     add_action ('init', 'wptuts_getusermeta'); función wptuts_getusermeta () // Recupera los marcadores del usuario $ bookmarks = get_user_meta (1, 'bookmarks', false); eco '
      '; foreach ($ marcadores como $ marcador) echo '
    • '. $ bookmark. '
    • '; eco '
    ';

    Actualización de un metadato de usuario

    La función update_user_meta () actualiza un único valor meta. Si hay varios valores para la misma clave de metadatos y no se especificó ningún valor de metadatos anterior, el nuevo valor sobrescribirá todos los valores de metadatos anteriores.

     add_action ('init', 'wptuts_updateusermeta'); function wptuts_updateusermeta () // Actualiza un usuario marcador update_user_meta (1, 'marcadores', 'https://site2.com', 'http://site2.com'); 

    Eliminar un metadato de usuario

    La función delete_user_data () elimina una sola o todas las claves / pares de metadatos para una clave meta dada. Si desea eliminar un solo valor, debe especificarlo en el tercer argumento.

     add_action ('init', 'wptuts_removeusermeta'); function wptuts_removeusermeta () // Actualiza un marcador de usuario delete_user_meta (1, 'marcadores', 'https://site2.com'); 

Gestión de roles y capacidades

  1. Creación y eliminación de roles

    Los roles de WordPress son extensibles. Puedes agregar y eliminar roles. Agregar un rol es bastante simple, necesita un nombre de barra de rol, un nombre de visualización para el rol; y las capacidades que tiene el rol..

     add_action ('init', 'wptuts_addrole'); función wptuts_addrole () add_role ('uploader', 'Uploader', array ('upload_files')); add_role ('link_manager', 'Link Manager', array ('manage_links')); 

    Si verifica una página de configuración de usuario (Usuario-> Seleccionar cualquier usuario-> Editar), encontrará que sus roles recién agregados están disponibles. Se muestran con el nombre mostrado que ingresó.

    Es importante mencionar que la creación de roles debe hacerse solo una vez. Así que si estás enganchando al "en eso"acción como en el código anterior, usted está recreando el rol cada vez que el código se activa. Esto no es algo bueno; en la práctica, desea crearlo solo una vez. Luego puede conectarlo al gancho de activación del complemento, y asegúrese de eliminarlo cuando el complemento esté desactivado.

    Eliminar roles es bastante sencillo también. Solo necesitas el nombre de la barra de roles.

     add_action ('init', 'wptuts_removerole'); función wptuts_removerole () remove_role ('uploader'); remove_role ('link_manager'); 
  2. Agregar capacidades a los roles

    Al igual que los usuarios, los roles tienen una clase especial: WP_Role. Sin embargo, la inicialización de esta clase requiere tanto el nombre del rol como las capacidades del rol; que no es tan útil.

    WordPress ofrece otra función. get_role () que solo requiere el nombre del rol e inicializa la clase por ti.

     add_action ('init', 'wptuts_getrole'); función wptuts_getrole () $ role = get_role ('editor'); var_dump ($ role); 

    El objeto devuelto tiene dos propiedades y tres métodos..

    WP_Role Propiedades

    • capacidades Un conjunto de las capacidades que el rol tiene.
    • nombre El nombre del rol.

    WP_Role Métodos

    • add_cap () Agregue la capacidad al objeto de rol
    • has_cap () Verificar si el rol tiene la capacidad
    • quite la tapa() Eliminar la capacidad del rol.
  3. Comprobación de permisos

    Los roles y capacidades están ahí, no hacen nada. Debe aplicarlos en su complemento o tema al verificarlos antes de ejecutar el código. Siempre debe verificar las capacidades en lugar de los roles. Un usuario con un rol de "editor" no garantiza que tenga las capacidades predeterminadas que WordPress asigna a este rol, ya que pueden ser cambiadas por otro complemento o por el propio propietario del blog..

    WordPress tiene 3 funciones para verificar permisos, que son intercambiables hasta cierto punto.

    • current_user_can ()
    • usuario_can ()
    • autor_can ()

    current_user_can () comprueba si el usuario actual tiene la capacidad especificada. También acepta una publicación u objeto para verificar las meta-capacidades.

    usuario_can () funciona de la misma manera pero puede especificar la ID de usuario. Sin embargo, no comprueba las meta-capacidades. Por lo tanto, es un poco faltante si desea buscar una meta-capacidad para un usuario diferente al usuario actual. Para eso, puedes usar el autor_can () función que verifica si un autor de la publicación puede realizar una tarea específica en función de una capacidad y una ID de publicación.

     // comprueba si el autor de la primera publicación puede publicar la publicación if (author_can (1, 'publish_posts')) publish_post_function (); // publicar la publicación else echo "No tienes derecho a publicar la publicación"; 

Conclusión

En esta parte, traté de cubrir la mayor cantidad posible de funciones de WordPress, y también explicar cuándo debe usar cada función. Ahora, debería poder crear un complemento o tema que use el sistema de capacidades. En la siguiente parte, le mostraré cómo crear un complemento que use este sistema..