WordPress Roles and Capabilities Fonctions importantes

Ce tutoriel en quatre parties couvre les utilisateurs WordPress, les rôles et les fonctionnalités. La série couvrira l'architecture et la conception des rôles d'utilisateur dans WordPress; souligner les fonctions les plus importantes pour interagir avec les utilisateurs et gérer les rôles et les fonctionnalités; et dans le dernier tutoriel, nous allons construire un exemple réel qui démontre l'utilité de cette API.


introduction

Dans la première partie, nous n'avons abordé que la théorie des utilisateurs, des rôles et des capacités. Cette partie portera sur le code et les fonctions offertes par WordPress pour interagir avec ce système. Évidemment, nous n'allons pas couvrir toutes les fonctions de WordPress, mais j'ai essayé de passer en revue les plus importantes et les plus utiles..

Les modifications et les mises à jour de WordPress étant fréquentes, vous devez toujours revenir à la documentation du Codex et vérifier si quelque chose a changé. Je fournirai un lien vers la page du Codex pour chaque fonction que nous couvrirons ici pour votre commodité..


Gérer les utilisateurs

Les utilisateurs de WordPress sont différents des visiteurs. Ce sont des personnes qui ont enregistré un compte avec un nom d'utilisateur unique sur votre site. Vous pouvez activer l'enregistrement de nouveaux utilisateurs sur votre site à partir du panneau Paramètres -> Général en cochant la case "Adhésion -> Tout le monde peut s'enregistrer"..

Dans cette section, nous aborderons certaines des fonctions utiles pour interagir avec les utilisateurs enregistrés dans WordPress. Votre nouvelle configuration WordPress devrait avoir au moins un utilisateur: celui qui a configuré l’installation de WordPress. Dans les anciennes versions, il s'agissait de "l'administrateur"; Cependant, vous pouvez maintenant choisir le nom d'utilisateur lors de l'installation de WordPress..

  1. Création, mise à jour et suppression d'utilisateurs

    WordPress a une interface visuelle pour créer, mettre à jour et supprimer des utilisateurs. Vous devriez l'utiliser la plupart du temps. Cependant, dans certains cas, vous souhaitez effectuer cette opération avec la programmation: par exemple, lors de l'importation d'utilisateurs à partir d'un autre framework ou si vous créez votre propre formulaire d'enregistrement personnalisé.

    WordPress a quatre fonctions pour effectuer ces activités:

    • wp_create_user
    • wp_insert_user
    • wp_update_user
    • wp_delete_user

    Au début, cela peut être un peu déroutant. Toutes les 3 premières fonctions peuvent créer de nouveaux utilisateurs, et les deux "wp_insert_user" et "wp_update_user"peut mettre à jour les utilisateurs existants. Mais il y a une raison à cela.

    Il y a deux façons de créer un nouvel utilisateur:

    1. En ne transmettant que les informations minimales nécessaires à la création de l'utilisateur (nom d'utilisateur, mot de passe et adresse électronique). Dans ce cas, vous devez utiliser le wp_create_user une fonction.
    2. En passant un tableau des données de l'utilisateur. Dans ce cas, vous devez utiliser le wp_insert_user une fonction. Cela donne la possibilité de définir toutes les données utilisateur pour votre utilisateur avant de les ajouter..

    Pour mettre à jour un utilisateur existant, vous devez utiliser wp_update_user. Il est possible d'utiliser le même wp_insert_user; Cependant, cette fonction ne hache pas le mot de passe de l'utilisateur et peut donc échouer. Par conséquent, il est préférable d'utiliser la bonne fonction pour le bon travail..

    Ci-dessous, je présente un exemple d’extrait d’utilisation pour chaque fonction. Cependant, vous devriez vous référer au Codex si vous recherchez une documentation plus détaillée..

    L'utilisation de wp_create_user

     add_action ('init', 'wpttuts_createuser'); function wpttuts_createuser () // Données utilisateur $ user_name = 'new_user'; $ user_password = 'new_user_password'; $ user_email = '[email protected]'; // Créer l'utilisateur $ user_id = wp_create_user ($ user_name, $ user_password, $ user_email); // Vérifie si la fonction a renvoyé un objet d'erreur WP si (is_wp_error ($ user_id)) $ user_id-> get_error_message ();  else // utilisateur créé avec succès

    L'utilisation de wp_insert_user

     add_action ('init', 'wpttuts_insertuser'); function wpttuts_insertuser () // Préparer les données utilisateur $ user_data = array ('user_login' => 'new_user', 'user_password' => 'new_user_password "user_email' => '[email protected]', 'role' => 'administrateur'); // crée l'utilisateur $ id_utilisateur = utilisateur_insert_wp ($ données_utilisateur); // vérifie si la fonction a renvoyé un objet d'erreur WP si (is_wp_error ($ id_utilisateur)) $ id_utilisateur-> get_error_message ();  // utilisateur créé avec succès

    L'utilisation de wp_update_user

     add_action ('init', 'wpttuts_updateuser'); function wpttuts_updateuser () // Préparer les données de l'utilisateur $ user_data = array ('user_id' => 3, 'description' => 'Notre nouvel utilisateur créé'); // Met à jour la description de l'utilisateur $ user_id = wp_update_user ($ user_data); // Vérifie si la fonction a renvoyé un objet d'erreur WP si (is_wp_error ($ user_id)) $ user_id-> get_error_message ();  else // utilisateur mis à jour avec succès

    L'utilisation de wp_delete_user

     add_action ('init', 'wpttuts_deleteuser'); function wpttuts_deleteuser () if (wp_delete_user (3, 1)) // l'utilisateur a été supprimé avec succès
  2. Obtenir la liste des utilisateurs

    WordPress offrait auparavant deux fonctions pour récupérer la liste des utilisateurs, vous n’avez donc pas à interroger la base de données. La première fonction "get_users_of_blog ()"renvoie un tableau de tous les utilisateurs du blog actuel (ou vous pouvez transmettre un ID de blog si vous exécutez une installation MultiSite). La deuxième fonction"get_users ()"retourne une liste d'utilisateurs basée sur les arguments passés à la fonction. Ceci élimine le besoin d'effectuer des requêtes SQL personnalisées vers la base de données.

    Les deux fonctions renvoient un tableau d'objets de données utilisateur. (À l'exception de get_users () où vous pouvez spécifier de ne renvoyer qu’un champ particulier.) L’objet utilisateur sera traité plus en détail dans la section suivante..

    Le "get_users_of_blog ()"la fonction est maintenant obsolète, vous ne devriez donc plus l'utiliser, et utiliser"get_users ()"à la place. Voici un exemple d'utilisation de"get_users ()".

     add_action ('init', 'wpttuts_getusers'); function wpttuts_getusers () // Critères de requête $ args = array ('orderby' => 'url', 'order' => 'ASC'); // Récupère le tableau d'utilisateurs $ users = get_users ($ args); // Parcourt les utilisateurs et affiche leur page d'accueil foreach ($ utilisateurs en tant que $ utilisateur) echo 'user_url. '">'. $ user-> user_url. '';

    L'argument de la fonction accepte plus d'options. Vous pouvez trouver la liste complète de ces options dans la page Fonction Codex.

    • blog_id Utile uniquement pour les installations multisites. La valeur par défaut est l'ID de blog actuel..
    • rôle Limiter les utilisateurs renvoyés au rôle spécifié.
    • comprendre Un tableau d'ID utilisateur à inclure dans la requête renvoyée.
    • exclure Un tableau d'ID utilisateur à exclure de la requête renvoyée.
  3. le WP_User Classe

    le WP_User class permet d'accéder aux propriétés, capacités et méthodes relatives à un utilisateur particulier. Pour créer une nouvelle instance de la classe, vous avez besoin de l'ID utilisateur ou du nom d'utilisateur. et si vous êtes sur une installation multisite, vous aurez également besoin de l'ID de blog.

    Vous pouvez initier la classe pour un utilisateur particulier et vider le contenu de la classe. Cela n'affichera que les propriétés, mais cela reste utile si vous voulez lire à l'intérieur de la classe d'utilisateurs.

     add_action ('init', 'wptuts_wpuserclass'); fonction wptuts_wpuserclass () $ user = new WP_User (1); var_dump ($ user); 

    Ce qui suit est un résumé des propriétés et des méthodes de la WP_User classe:

    WP_User Propriétés

    • Les données (Objet avec les détails de l'utilisateur tels que le nom d'utilisateur, mot de passe, URL…)
    • ID (Entier L'ID utilisateur)
    • casquettes (Tableau)
    • rôles (Tableau Rôles assignés à l'utilisateur)
    • cap_key (Chaîne)
    • toutes en majuscules (Tableau Toutes les fonctionnalités de l'utilisateur
    • filtre (Nul)

    WP_User Méthodes publiques

    • get_role_caps () Définit les propriétés des rôles et allcaps.
    • add_role () Ajouter un rôle à l'utilisateur.
    • remove_role () Supprimer un rôle de l'utilisateur.
    • set_role () Définir un rôle pour l'utilisateur. Cela supprimera les rôles précédemment attribués.
    • add_cap () Ajouter une capacité à l'utilisateur.
    • remove_cap () Supprimer la capacité de l'utilisateur.
    • remove_all_caps () Supprimer toutes les fonctionnalités de l'utilisateur.
    • has_cap () Vérifie si l'utilisateur a une capacité ou un nom de rôle.
  4. Méta-données des utilisateurs

    Comme indiqué dans l'article précédent, les méta-données des utilisateurs sont des données sur l'utilisateur enregistrées dans le wp_usermeta table. Il est enregistré en tant que valeur clé / paire et la méta-valeur peut être n'importe quel type de données. La paire n'est pas nécessairement unique. Vous pouvez stocker plusieurs paires avec la même clé.

    Ajout d'une méta-donnée utilisateur

    La fonction add_user_meta () ajoute de nouvelles métadonnées utilisateur. La fonction renvoie true lorsque les données ont été ajoutées avec succès et false si elles échouent. Comme mentionné précédemment, il est possible d'ajouter de nombreuses méta-valeurs avec la même clé. Si vous voulez rendre les clés méta uniques, définissez le quatrième argument sur true.

     add_action ('init', 'wptuts_addusermeta'); function wptuts_addusermeta () // Ajoute plusieurs méta-valeurs avec la même méta-clé add_user_meta (1, 'bookmarks', 'http://site1.com', false); add_user_meta (1, 'signets', 'http://site2.com', false); add_user_meta (1, 'signets', 'http://site3.com', false); 

    Récupérer une méta-donnée utilisateur

    La fonction get_user_meta () renvoie la méta-valeur en fonction de l'ID utilisateur et de la clé méta qui lui ont été transmis.

     add_action ('init', 'wptuts_getusermeta'); function wptuts_getusermeta () // Récupère les signets de l'utilisateur $ bookmarks = get_user_meta (1, 'bookmarks', false); écho '
      '; foreach ($ bookmarks en tant que $ bookmark) echo '
    • '. $ bookmark. '
    • '; écho '
    ';

    Mise à jour d'une méta-donnée utilisateur

    La fonction update_user_meta () met à jour une seule méta-valeur. S'il existe plusieurs valeurs pour la même clé méta et qu'aucune méta valeur précédente n'a été spécifiée, la nouvelle valeur écrasera toutes les méta valeurs précédentes..

     add_action ('init', 'wptuts_updateusermeta'); function wptuts_updateusermeta () // Met à jour un signet utilisateur update_user_meta (1, 'signets', 'https://site2.com', 'http://site2.com'); 

    Supprimer une méta-donnée utilisateur

    La fonction delete_user_data () supprime une ou toutes les clés méta / paires pour une clé méta donnée. Si vous souhaitez supprimer une seule valeur, vous devez la spécifier dans le troisième argument..

     add_action ('init', 'wptuts_removeusermeta'); function wptuts_removeusermeta () // Met à jour un signet utilisateur delete_user_meta (1, 'signets', 'https://site2.com'); 

Gestion des rôles et des capacités

  1. Création et suppression de rôles

    Les rôles WordPress sont extensibles. Vous pouvez ajouter et supprimer des rôles. L'ajout d'un rôle est assez simple, vous avez besoin d'un nom de slug de rôle, d'un nom complet pour le rôle. et les capacités du rôle a.

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

    Si vous consultez une page de paramètres utilisateur (Utilisateur-> Choisissez un utilisateur-> Modifier), vous constaterez que les rôles que vous venez d'ajouter sont disponibles. Ils sont affichés avec le nom d'affichage que vous avez entré.

    Il est important de mentionner que la création de rôle ne doit être effectuée qu'une fois. Donc, si vous accrochez à la "init"action comme dans le code ci-dessus, vous recréez le rôle à chaque fois que le code est déclenché. Ce n'est pas une bonne chose; en pratique, vous voulez le créer une seule fois. Vous pouvez ensuite le raccrocher au crochet d'activation du plug-in, et assurez-vous de l'enlever quand le plugin est désactivé.

    Supprimer des rôles est également assez simple. Vous avez juste besoin du nom du slug de rôle.

     add_action ('init', 'wptuts_removerole'); fonction wptuts_removerole () remove_role ('uploader'); remove_role ('link_manager'); 
  2. Ajout de fonctionnalités aux rôles

    De la même manière que les utilisateurs, les rôles ont une classe spéciale: WP_Role. Cependant, l’initialisation de cette classe nécessite à la fois le nom du rôle et ses fonctionnalités; ce qui n'est pas si utile.

    WordPress offre une autre fonction get_role () qui nécessite uniquement le nom du rôle et initialise la classe pour vous.

     add_action ('init', 'wptuts_getrole'); fonction wptuts_getrole () $ role = get_role ('editor'); var_dump ($ role); 

    L'objet retourné a deux propriétés et trois méthodes.

    WP_Role Propriétés

    • capacités Un tableau des capacités du rôle.
    • prénom Le nom du rôle.

    WP_Role Les méthodes

    • add_cap () Ajouter la capacité à l'objet de rôle
    • has_cap () Vérifier si le rôle a la capacité
    • remove_cap () Supprimer la capacité du rôle
  3. Vérification des autorisations

    Les rôles et les capacités sont là, ils ne font rien. Vous devriez les appliquer dans votre plugin ou votre thème en les vérifiant avant d'exécuter du code. Vous devriez toujours vérifier les capacités plutôt que les rôles. Un utilisateur avec un rôle d '"éditeur" ne garantit pas qu'il dispose des fonctionnalités par défaut que WordPress attribue à ce rôle car elles peuvent être modifiées par un autre plugin ou par le propriétaire du blog..

    WordPress dispose de 3 fonctions pour vérifier les autorisations, qui sont interchangeables dans une certaine mesure.

    • current_user_can ()
    • user_can ()
    • author_can ()

    current_user_can () vérifie si l'utilisateur actuel a la capacité spécifiée. Il accepte également une publication ou un objet pour vérifier les méta-capacités..

    user_can () fonctionne de la même manière mais vous pouvez spécifier l’ID utilisateur. Cependant, il ne vérifie pas les méta-capacités. Donc, il vous manque un peu si vous souhaitez rechercher une méta-capacité pour un utilisateur différent de l'utilisateur actuel. Pour cela, vous pouvez utiliser le author_can () fonction qui vérifie si un auteur de publication peut effectuer une tâche spécifique en fonction d'une capacité et d'un ID de publication.

     // vérifie si l'auteur du premier message peut publier le message if (author_can (1, 'publish_posts')) publish_post_function (); // publier le message else echo "Vous n'avez pas le droit de publier le message"; 

Conclusion

Dans cette partie, j’ai essayé de couvrir autant de fonctions que possible dans WordPress et d’expliquer quand vous devriez utiliser chaque fonction. Maintenant, vous devriez pouvoir créer un plugin ou un thème qui utilise le système de fonctionnalité. Dans la partie suivante, je vais vous montrer comment construire un plugin qui utilise ce système..