Dans WordPress, il est souvent nécessaire de travailler avec la classe WP_User et ses diverses méthodes. Voici quelques fonctions utiles pour les utilisateurs WordPress et exemples pratiques de manipulation de cet objet qui pourront certainement vous servir si vous créez vos propres plugins.  

Création d'un nouvel utilisateur

Utilisation de la fonction wp_create_user()

Exemple minimal pour créer un utilisateur qui aura automatiquement le rôle par défaut défini dans vos réglages.

				
					<?php
$user_id = wp_create_user( 'nom_utilisateur', 'mot_de_passe', 'email@example.com' );

if ( is_wp_error( $user_id ) ) {
    // Gestion des erreurs
    echo 'Erreur : ' . $user_id->get_error_message();
} else {
    echo 'Utilisateur créé avec succès. ID : ' . $user_id;
}
?>

				
			
  • wp_create_user() : Crée un nouvel utilisateur avec un nom d’utilisateur, un mot de passe et une adresse e-mail.
  • Retourne : L’ID de l’utilisateur créé ou un objet WP_Error en cas d’échec.

Utilisation de la fonction wp_insert_user()

				
					<?php
$user_data = array(
    'user_login'    => 'nom_utilisateur',
    'user_pass'     => 'mot_de_passe',
    'user_email'    => 'email@example.com',
    'first_name'    => 'Prénom',
    'last_name'     => 'Nom',
    'role'          => 'editor',
);

$user_id = wp_insert_user( $user_data );

if ( is_wp_error( $user_id ) ) {
    // Gestion des erreurs
    echo 'Erreur : ' . $user_id->get_error_message();
} else {
    echo 'Utilisateur créé avec succès. ID : ' . $user_id;
}
?>

				
			
  • wp_insert_user() : Permet de créer ou de mettre à jour un utilisateur avec un tableau de données plus complet.
  • Paramètres : Tableau associatif contenant les informations de l’utilisateur.
  • Retourne : L’ID de l’utilisateur créé/mis à jour ou un objet WP_Error en cas d’échec

Récupération d'un utilisateur existant

Utilisation de la fonction get_user_by()

Cette fonction très pratique vous permet de récupérer toutes les données d’un utilisateur en fonction d’un champ spécifique : 

				
					<?php
$user = get_user_by( 'email', 'email@example.com' ); 
//on demande une recherche par email en passant l'email voulu en paramètre

if ( $user ) {
    echo 'Utilisateur trouvé : ' . $user->user_login;
} else {
    echo 'Aucun utilisateur trouvé avec cet email.';
}
?>

				
			
  • get_user_by( $champ, $valeur ) : Récupère un objet utilisateur en fonction d’un champ spécifique.
  • Paramètres :
    • $champ : Le champ à utiliser pour la recherche ('id', 'slug', 'email', 'login').
    • $valeur : La valeur à rechercher.
  • Retourne : Un objet WP_User ou false si aucun utilisateur n’est trouvé.

Vérifier si un utilisateur existe

Utilisons la méthode exists() avec la classe WP_User :

				
					<?php
$user = new WP_User( $user_id );

if ( $user->exists() ) {
    echo 'Utilisateur trouvé : ' . $user->user_login;
} else {
    echo 'Aucun utilisateur trouvé avec cet ID.';
}
?>

				
			

Mise à jour des informations d'un utilisateur

Utilisation de la fonction wp_update_user()

				
					<?php
$user_data = array(
    'ID'           => $user_id,
    'first_name'   => 'Nouveau Prénom',
    'last_name'    => 'Nouveau Nom',
    'user_email'   => 'nouvel_email@example.com',
);

$updated_user_id = wp_update_user( $user_data );

if ( is_wp_error( $updated_user_id ) ) {
    // Gestion des erreurs
    echo 'Erreur : ' . $updated_user_id->get_error_message();
} else {
    echo 'Utilisateur mis à jour avec succès.';
}
?>

				
			
  • wp_update_user() : Met à jour les informations d’un utilisateur existant.
  • Paramètres : Tableau associatif contenant les informations à mettre à jour.
  • Important : Le champ 'ID' est obligatoire pour identifier l’utilisateur à mettre à jour.

Suppression d'un utilisateur

Utilisation de la fonction wp_delete_user()

				
					<?php
if ( wp_delete_user( $user_id ) ) {
    echo 'Utilisateur supprimé avec succès.';
} else {
    echo 'Échec de la suppression de l\'utilisateur.';
}
?>

				
			
  • wp_delete_user( $user_id, $reassign ) : Supprime un utilisateur.
  • Paramètres :
    • $user_id : L’ID de l’utilisateur à supprimer.
    • $reassign (optionnel) : L’ID d’un utilisateur à qui réattribuer les contenus de l’utilisateur supprimé.
  • Retourne : true en cas de succès, false en cas d’échec.
  • $reassign est un paramètre facultatif qui vous permet de spécifier un autre $user_id à qui attribuer tout ce qui pouvait être attribué au $user_id que vous supprimez. Si c’était un auteur qui avait écrit des articles, alors ses articles seront assignés à $reassign.

Gestion des rôles et des capacités

Dans WordPress, la gestion des rôles et de leurs capacités est cruciale. C’est ce qui vous permet de décider qu’un utilisateur peut voir ou faire telle ou telle action. Par défaut, WordPress propose un certain nombre de rôles avec des capacités. Ces rôles par défaut et leurs capacités sont détaillés dans cet article.

Vérification du rôle d'un utilisateur

				
					<?php
if ( in_array( 'administrator', $user->roles ) ) {
    echo 'Cet utilisateur est un administrateur.';
} else {
    // Affiche tous les rôles de l'utilisateur s'il n'est pas administrateur
    $user_roles = implode( ', ', $user->roles ); // Convertit les rôles en une chaîne
    echo 'Cet utilisateur n\'est pas administrateur, il a les rôles suivants : ' . $user_roles;
}
?>

				
			

Attribution d'un rôle à un utilisateur

				
					<?php
$user = new WP_User( $user_id );
$user->set_role( 'editor' );
echo 'Le rôle de l\'utilisateur a été mis à jour en éditeur.';
?>

				
			

set_role( $role ) : Attribue un rôle unique à l’utilisateur, en supprimant les rôles existants.

Ajout d'un rôle supplémentaire

				
					<?php
$user = new WP_User( $user_id );
$user->add_role( 'author' );
echo 'Le rôle d\'auteur a été ajouté à l\'utilisateur.';
?>

				
			

add_role( $role ) : Ajoute un rôle supplémentaire à l’utilisateur.

Suppression d'un rôle

				
					<?php
$user = new WP_User( $user_id );
$user->remove_role( 'subscriber' );
echo 'Le rôle d\'abonné a été supprimé de l\'utilisateur.';
?>

				
			

remove_role( $role ) : Supprime un rôle spécifique de l’utilisateur.

Vérification des capacités

				
					<?php
$user = new WP_User( $user_id );
if ( $user->has_cap( 'edit_posts' ) ) {
    echo 'Cet utilisateur peut éditer des articles.';
}
?>

				
			

has_cap( $capability ) : Vérifie si l’utilisateur a une capacité spécifique.

Lister toutes les capacités d'un utilisateur

				
					<?php
// Obtenez l'objet utilisateur pour l'utilisateur en cours ou un utilisateur spécifique
$user = wp_get_current_user(); //pour un utilisateur connecté ou new WP_User( $user_id );

// Vérifiez si l'utilisateur existe
if ( $user->exists() ) {
    // Parcourez toutes les capacités de l'utilisateur
    echo '<ul>';
    foreach ( $user->allcaps as $capability => $has_cap ) {
        // Affichez chaque capacité et si l'utilisateur la possède ou non
        echo '<li>' . $capability . ' : ' . ( $has_cap ? 'Oui' : 'Non' ) . '</li>';
    }
    echo '</ul>';
} else {
    echo 'Utilisateur non trouvé.';
}
?>

				
			
  • $user->allcaps : C’est un tableau associatif où chaque clé est une capacité (comme 'edit_posts', 'publish_posts', etc.) et chaque valeur est un booléen (true ou false) indiquant si l’utilisateur a cette capacité.
  • foreach : Parcourt chaque capacité et affiche si l’utilisateur la possède ou non.

Manipulation des métadonnées utilisateur

Les métadonnées sont des données supplémentaires que vous pouvez vouloir recueillir des informations sur vos utilisateurs. Cela peut être une adresse, une ville, un code postal, une biographie, etc. Il existe un excellent plugin gratuit qui permet de manipuler les métadonnées (utilisateurs ou autres) : Advanced Custom Fields (aujourd’hui Secure Custom Fields). 

Ajout de métadonnées

				
					<?php
add_user_meta( $user_id, 'cle_meta', 'valeur_meta', true );
echo 'Métadonnée ajoutée avec succès.';
//par exemple ajouter une adresse :
add_user_meta( $user_id, 'adresse', '3 rue de Clichy', true );
echo 'Métadonnée adresse ajoutée avec succès.';
?>

				
			
  • add_user_meta( $user_id, $meta_key, $meta_value, $unique ) : Ajoute une métadonnée à un utilisateur.
  • Paramètres :
    • $user_id : ID de l’utilisateur.
    • $meta_key : Clé de la métadonnée.
    • $meta_value : Valeur de la métadonnée.
    • $unique : Si défini à true, n’ajoute la métadonnée que si elle n’existe pas déjà.

Récupération de métadonnées

				
					<?php
$valeur_meta = get_user_meta( $user_id, 'cle_meta', true );
echo 'La valeur de la métadonnée est : ' . $valeur_meta;
//par exemple retrouver une adresse :

$valeur_meta = get_user_meta( $user_id, 'adresse', true );
echo 'La valeur de la métadonnée est : ' . $valeur_meta;
//pour notre exemple précédent, retourenera : 3 rue de Clichy
?>

?>

				
			
  • get_user_meta( $user_id, $meta_key, $single ) : Récupère la valeur d’une métadonnée utilisateur.
  • Paramètres :
    • $single : Si défini à true, retourne une seule valeur.

Mise à jour de métadonnées

				
					<?php
update_user_meta( $user_id, 'cle_meta', 'nouvelle_valeur' );
echo 'Métadonnée mise à jour avec succès.';
?>

				
			
  • update_user_meta( $user_id, $meta_key, $meta_value, $prev_value ) : Met à jour la valeur d’une métadonnée.
  • $prev_value (optionnel) : Valeur précédente pour une mise à jour conditionnelle.
  • L’utilisation de $prev_value est utile dans les cas où vous voulez vous assurer que la mise à jour de la métadonnée n’est effectuée que si la valeur actuelle est déjà une valeur spécifique, autrement dit, vous vérifiez que la valeur de la métadonnée est bien ce que vous attendez avant de la modifier. Si la valeur actuelle de la métadonnée est différente de celle spécifiée par $prev_value, la mise à jour échoue (aucun changement n’est fait).

Exemple de mise à jour avec $prev_value

				
					<?php
// ID de l'utilisateur
$user_id = 123;

// Clé de la métadonnée
$meta_key = 'cle_meta';

// Nouvelle valeur
$new_value = 'nouvelle_valeur';

// Valeur précédente attendue
$prev_value = 'ancienne_valeur';

// Mise à jour conditionnelle
$updated = update_user_meta( $user_id, $meta_key, $new_value, $prev_value );

if ( $updated ) {
    echo 'La métadonnée a été mise à jour avec succès.';
} else {
    echo 'La mise à jour a échoué. La valeur actuelle n\'était pas égale à "ancienne_valeur".';
}
?>

				
			

Suppression de métadonnées

				
					<?php
delete_user_meta( $user_id, 'cle_meta' );
echo 'Métadonnée supprimée avec succès.';
?>

				
			
  • delete_user_meta( $user_id, $meta_key, $meta_value ) : Supprime une métadonnée utilisateur.
  • $meta_value (optionnel) : Supprime uniquement si la valeur correspond.

Exemples Pratiques

Exemple 1 : Lister tous les utilisateurs avec le rôle "auteur"

				
					<?php
$args = array(
    'role'    => 'author',
    'orderby' => 'user_nicename',//classé par nom d'utilisateur
    'order'   => 'ASC',//ordre ascendant
);

$users = get_users( $args );

foreach ( $users as $user ) {
    echo 'ID : ' . $user->ID . ' - Nom : ' . $user->display_name . '<br>';
}
?>

				
			

get_users( $args ) : Récupère une liste d’utilisateurs selon des critères.

Exemple 2 : Vérifier si un utilisateur est connecté

				
					<?php
if ( is_user_logged_in() ) {
    $current_user = wp_get_current_user();
    echo 'Connecté en tant que : ' . $current_user->user_login;
} else {
    echo 'Aucun utilisateur n\'est connecté.';
}
?>

				
			
  • is_user_logged_in() : Vérifie si un utilisateur est connecté.
  • wp_get_current_user() : Récupère l’objet utilisateur courant.

Exemple 3 : Restreindre l'accès à une page aux utilisateurs connectés

				
					<?php
if ( ! is_user_logged_in() ) {//l'utilisateur n'est pas connecté
    wp_redirect( wp_login_url() );//il est redirigé vers la page de connexion
    exit;//arrêt du script. Important !
}
?>
<!-- Contenu réservé aux utilisateurs connectés -->
<h1><span class="ez-toc-section" id="Bienvenue_vous_etes_connecte"></span>Bienvenue, <?php echo wp_get_current_user()->display_name; ?>, vous êtes connecté!<span class="ez-toc-section-end"></span></h1>

				
			
  • wp_redirect( $url ) : Redirige vers une URL spécifique.
  • wp_login_url() : Retourne l’URL de la page de connexion.

Conclusion des fonctions utiles pour les utilisateurs WordPress

La manipulation de l’objet WP_User et des fonctions associées permet une gestion fine des utilisateurs dans WordPress. Que ce soit pour créer des utilisateurs personnalisés, gérer les rôles et les capacités, ou interagir avec les métadonnées, WordPress offre une API riche et flexible.

En comprenant ces méthodes et en les appliquant judicieusement, vous pouvez étendre les fonctionnalités de votre site et offrir une expérience utilisateur adaptée à vos besoins spécifiques, grâce aux fonctions utiles pour les utilisateurs WordPress.

Fonctions utiles pour les utilisateurs WordPress

Laisser un commentaire