Dans le fichier functions.php
de mon thème, je n'ai aucune difficulté à vérifier le rôle de l'utilisateur. J'ai vérifié de deux manières différentes:
if ( current_user_can('wholesale_customer') ) {
// my code
}
et
$current_user = wp_get_current_user();
if ( in_array( 'wholesale_customer', (array) $current_user->roles )) {
// my code
}
Les deux fonctionnent parfaitement dans mon fichier functions.php
. Cependant, j'ai un plugin personnalisé, et tout simplement en mettant le:
$current_user = wp_get_current_user();
une partie fait que la page entière ne fonctionne pas. Donc ma question est: comment puis-je vérifier l'utilisateur actuel dans un plugin personnalisé?
Cela ne fonctionne pas pour le plugin car au moment où WordPress exécute $current_user = wp_get_current_user();
dans un plugin, la fonction wp_get_current_user()
n'est pas encore définie. WordPress charge ce fichier de plugin avant qu'il ne définisse ces fonctions liées à l'utilisateur. Cependant, cela fonctionne pour thème car WordPress charge le thème après avoir défini et lancé ces fonctions centrées sur l'utilisateur.
Pour que cela fonctionne dans un plugin, vous pouvez utiliser un hook d’action. Par exemple, cela fonctionnera une fois que le hook d'action plugins_loaded
aura été déclenché. Comme le code ci-dessous:
add_action( 'plugins_loaded', 'check_current_user' );
function check_current_user() {
// Your CODE with user data
$current_user = wp_get_current_user();
// Your CODE with user capability check
if ( current_user_can('wholesale_customer') ) {
// Your CODE
}
}
Avec le CODE ci-dessus, la vérification du rôle avec current_user_can()
et l'obtention des informations utilisateur avec wp_get_current_user()
fonctionnent dans un plug-in.