Publié le : 07/10/2020

Gestion des rôles des utilisateurs dans WordPress

Quand vous débutez sous WordPress, dans la majorité des cas, vous n’avez besoin que d’un seul utilisateur pour la gestion de votre site.

Mais par contre, si vous avez un site avec des milliers d’articles, vous aurez besoin de collaborateur pour vous aider à gérer vos contenus. Pour ce faire, vous devez gérer les rôles et affecter ces rôles à un ou plusieurs utilisateurs.

Ce que nous allons montrer dans cette article est la création et l’utilisation de rôle spécifique pour des utilisateurs WordPress. En effet, en travaillant avec des rôles spécifiques, on peut définir des accès spécifiques pour les utilisateurs. De plus, on va voir comment créer, assigner et attribuer un rôle à des utilisateurs.

Par défaut, WordPress possède des rôles qui permet de définir le niveau d’accès des utilisateurs, leurs droits dans votre site. Mais il peut s’avérer que ces rôles soit limiter pour diverses raisons. Par exemple, vous voudrez différencier des utilisateurs mais vous ne voulez pas leur donner les rôles de « subscriber » ou de « contributeur ». La création des rôles spécifiques dans WordPress peut résoudre ce problème en donnant par exemple à l’utilisateur l’accès qu’il doit avoir.

La vérité est que les rôles dans WordPress peut être utilisés de différentes manières. De ce fait, il est nécessaire de bien concevoir les rôles que vous voudrez mettre en place avant de le définir concrètement dans WordPress.

Rentrons maintenant dans le vif du sujet !!!

Création d’un rôle spécifique dans WordPress

Avant d’affecter un utilisateur à un rôle, nous avons besoin de définir le rôle en question. Pour créer un rôle, on peut utiliser la fonction add_role(). Une fois que le rôle est créé, il est stocké dans la base de données. Celà signigie que l’exécution de la fonction add_role() ne doit se faire qu’une seule fois, par exemple lors de l’activation d’un plugin, ou effectuer un test pour voir si le rôle que vous voulez existe. Ci-dessous un exemple de code montrant cette création.

function creer_role(){
  $role_client = get_role("client");
  if(!(isset($role_client) && !is_null($role_client) && $role_client instanceof WP_Role)){
    add_role(
      'client_member',
      'Client',
      array(
          'read'         => true,
          'delete_posts' => false
      )
    );
  }
}
add_action("admin_init","creer_role");

Dans le code ci-dessus, nous avons :

  • En premier, nous avons add_role($name, $display_name, $capabilities) : c’est la fonction qui permet de créer le rôle. Il crée un nouveau rôle avec les « capabilities » que nous avons défini. Il est primordial d’utiliser un « name » unique pour éviter tout conflit.
  • Ensuite, nous avons add_action("admin_init","creer_role"): c’est ce qui appelle notre fonction. Ici nous informons WordPress que : « lorsqu’il charge une page d’administration, il faut qu’il exécute notre fonction creer_role« .

Voyons maintenant par la suite comment ajouter un rôle à un utilisateur et/ou modifier le rôle d’un utilisateur.

Ajout d’un rôle à un utilisateur VS modifier le rôle d’un utilisateur

Quand on va assigner un rôle à un utilisateur, nous avons deux approches dans WordPress. L’un de ces approches est d’écraser les rôles existant d’un utilisateur par le rôle que vous voulez. L’autre approche est d’ajouter le rôle que vous voulez aux rôles déjà existant de l’utilisateur.

Ainsi, pour remplacer tous le rôle d’un utilisateur par un autre rôle, nous allons utiliser set_role. Tandis que pour ajouter un rôle aux autres rôles d’un utilisateur on va utiliser add_role. Ci-dessous un exemple de code illustrant ces propos.

$user = new WP_User(123); //123 est l'ID de l'utilisateur
$user->roles; // ["subscriber"]
 
$user->add_role('client_member');
$user->roles; // ["subscriber", "client_member"]
 
$user->set_role('editor');
$user->roles; // ["editor"]

Les deux approches sont valables. Mais avant de décider quel choix faire, il faut bien analyser ce que vous voulez avoir en terme de gestion des droits des utilisateurs. De ce fait une conception en amont est nécessaire.

Les mots clés rattachés à cet article : PHP  -  Wordpress

Nos clients

Une vingtaine de clients nationaux et internationaux