Comment masquer la barre d'administration pour les clients WooCommerce ou par rôles d'utilisateur
Publié: 2020-02-23Il est important de masquer la barre d'administration dans WooCommerce aux abonnés, clients et utilisateurs non administrateurs pour éviter l'accès au tableau de bord WordPress. Il existe des moyens de masquer la barre d'administration WordPress, comme indiqué dans ce didacticiel - comment masquer la barre d'administration dans WordPress. Ces mêmes techniques peuvent être utilisées dans un site WooCommerce mais avec certaines conditions pour chacun des cas.
Masquer la barre d'administration pour l'option d'administration WooCommerce
Pour masquer la barre d'administration pour l'administrateur, il existe probablement des plugins qui peuvent également aider et fonctionneront également pour WooCommerce.
Avant d'utiliser un plugin, vous devez d'abord essayer cette option rapide dans le tableau de bord d'administration de WordPress. Cette option fonctionne également bien pour les sites WooCommerce, il n'y a aucune différence.
Accédez aux paramètres du profil d'utilisateur de l'administrateur et cochez cette option pour masquer la barre d'administration pour les administrateurs lors de la consultation du site.
Décochez cette option et enregistrez les paramètres, puis visitez l'interface pour voir si la barre d'administration a été masquée. Comme vous pouvez le voir dans l'image ci-dessous, la barre d'administration sera masquée pour l'utilisateur administrateur lors de la consultation du site.
C'est un moyen important d'avoir un aperçu de l'apparence de votre site lorsque vous n'êtes pas connecté.
Cela aide également lorsque vous essayez de déboguer certains problèmes de thème WooCommerce liés à l'affichage de l'en-tête.
WooCommerce Masquer l'option de code à barres de l'administrateur
Pour implémenter la même chose pour les clients et abonnés WooCommerce, nous devons utiliser le filtre 'show_admin_bar'
pour renvoyer false à celui que nous masquons la barre d'administration.
Vous pouvez utiliser ce crochet de différentes manières et il existe également une fonction portant le même nom qui fonctionne de la même manière.
La fonction show_admin_bar( bool $show )
prend un paramètre qui est un Boolean
( True ou False ) et peut être utilisé comme suit :
show_admin_bar( false );
Ce code, lorsqu'il est ajouté au fichier functions.php de votre thème, masquera la barre d'administration. Je l'ai testé avec le thème vitrine WooCommerce installé et cela fonctionne parfaitement il cache la barre d'administration.
Vous pouvez encore améliorer cette fonction et ajouter un test conditionnel dans lequel vous autorisez l'administrateur à afficher la barre d'administration alors que le client ne doit pas la voir.
Dans ce cas, vous testerez conditionnellement avec le rôle client ou tout autre rôle sur votre site dont vous souhaitez masquer la barre d'administration.
Vous pouvez obtenir les rôles disponibles sur votre site WordPress à partir de Ajouter un nouvel utilisateur et la dernière option a la liste déroulante Rôles :
Pour obtenir le rôle d'utilisateur actuel, j'ai écrit un tutoriel sur la façon d' obtenir le rôle actuel dans WordPress et vous pouvez l'utiliser dans le cas pour obtenir le rôle d'utilisateur client et définir la fonction show_admin_bar()
sur false.
Dans ce cas, voici le code que vous pouvez utiliser pour obtenir le rôle d'utilisateur actuel et vérifier conditionnellement si le rôle d'utilisateur est un client.
Ce code que j'ai partagé dans le tutoriel sur la façon d'obtenir le rôle d'utilisateur actuel dans WordPress et nous pouvons le réutiliser dans ce cas :
add_action( 'wp_head', 'njengah_get_current_user_role'); fonction njengah_get_current_user_role() { if( is_user_logged_in() ) { // vérifie s'il y a un utilisateur connecté $user = wp_get_current_user(); // obtenir et définir l'utilisateur actuel $roles = ( array ) $user->roles; // obtention du rôle //retourne $roles ; // renvoie le rôle de l'utilisateur courant // Test avec print_r print('<pre>'); print_r( $roles); imprimer('</pre>'); } autre { renvoie tableau(); // s'il n'y a pas d'utilisateur connecté, retourne un tableau vide } }
Lorsque vous testez ce code en ajoutant au functions.php, vous devriez voir le rôle de l'utilisateur actuel affiché dans le tableau comme indiqué dans l'image ci-dessous :
Nous pouvons obtenir ce rôle d'utilisateur à partir du tableau en utilisant la key [0]
et lorsque nous modifions légèrement le code et imprimons le rôle d'utilisateur, nous devrions voir le rôle d'utilisateur imprimé comme dans le code modifié suivant :
add_action( 'wp_head', 'njengah_get_current_user_role_print'); fonction njengah_get_current_user_role_print() { if( is_user_logged_in() ) { // vérifie s'il y a un utilisateur connecté $user = wp_get_current_user(); // obtenir et définir l'utilisateur actuel $roles = ( array ) $user->roles; // obtention du rôle echo $roles[0] ; } autre { renvoie tableau(); // s'il n'y a pas d'utilisateur connecté, retourne un tableau vide } }
Puisque nous avons réussi à obtenir le rôle d'utilisateur, nous pouvons maintenant l'utiliser dans la fonction show_admin_bar()
de manière conditionnelle pour masquer la barre d'administration pour un rôle d'utilisateur spécifique qui peut être n'importe quel rôle.
À titre d'illustration, nous masquons maintenant la barre d'administration pour le rôle d'administrateur à l'aide du code ci-dessous :
add_action( 'wp_head', 'njengah_hide_admin_bar_for_administrator'); function njengah_hide_admin_bar_for_administrator() { if( is_user_logged_in() ) { // vérifie s'il y a un utilisateur connecté $user = wp_get_current_user(); // obtenir et définir l'utilisateur actuel $roles = ( array ) $user->roles; // obtention du rôle if( $roles[0] == 'administrator'){ //vérifier le rôle ici. Vous pouvez le remplacer par d'autres rôles d'utilisateur. Exemple d'éditeur "client", etc. echo $roles[0] ; // imprime le rôle à l'écran à des fins de démonstration (doit être supprimé en production) show_admin_bar( false ); // cache le rôle pour cette condition } } autre { renvoie tableau(); // s'il n'y a pas d'utilisateur connecté, retourne un tableau vide } }
Lorsque vous ajoutez ce code au fichier functions.php, vous verrez que le rôle d'administrateur est affiché à l'écran comme avant et que la barre d'administration a été masquée de manière conditionnelle.
Vous pouvez remplacer ce rôle d'administrateur par le client et vous pouvez également ajouter plusieurs tests conditionnels dans la condition comme suit :
add_action( 'wp_head', 'njengah_hide_admin_bar_for_customer'); function njengah_hide_admin_bar_for_administrator() { if( is_user_logged_in() ) { // vérifie s'il y a un utilisateur connecté $user = wp_get_current_user(); // obtenir et définir l'utilisateur actuel $roles = ( array ) $user->roles; // obtention du rôle if( $roles[0] == 'customer'){ //vérifiez le rôle ici. Vous pouvez le remplacer par d'autres rôles d'utilisateur. Exemple d'éditeur "client", etc. echo $roles[0] ; // imprime le rôle à l'écran à des fins de démonstration (doit être supprimé en production) show_admin_bar( false ); // cache le rôle pour cette condition } } autre { renvoie tableau(); // s'il n'y a pas d'utilisateur connecté, retourne un tableau vide } }
Comme dans le cas de l'administrateur lorsque vous testez, vous devriez voir le nom du rôle affiché en tant que client et la barre d'administration masquée.
Masquer la barre d'administration en fonction des capacités de l'utilisateur actuel
Une autre façon de masquer la barre d'administration de tous les utilisateurs attendent l'administrateur, vous pouvez ajouter le code suivant au functions.php :
if ( ! current_user_can( 'manage_options' ) ) { show_admin_bar( false ); }
Ce code utilise le test conditionnel current_user_can()
et vous pouvez le modifier en différents privilèges comme pour un client, il devrait être comme suit :
if ( ! current_user_can( 'read' ) ) { show_admin_bar( false ); }
Cela équivaut au rôle d'un abonné dans WordPress. WooCommerce crée deux rôles - Customer et Shop Manager. Le client est équivalent à l'abonné donc dans ce cas, les capacités d'un abonné sont en ' lecture '.
Vous pouvez consulter toutes les capacités des utilisateurs de WordPress à partir de la documentation Rôles et capacités. Vous pouvez en savoir plus sur les rôles WooCommerce à partir de la documentation sur les rôles et les capacités de WooCommerce.
Implémentation du code pour masquer la barre d'administration dans WooCommerce
Dans le code ci-dessus, nous avons expliqué en détail comment tout fonctionne pour masquer la barre d'administration dans WooCommerce.
Si vous avez noté que j'utilisais un add_action()
attaché au 'wp_head'
à des fins de test mais en production, nous devons utiliser un filtre au lieu d'un crochet d'action.
Dans ce cas, le filtre doit s'accrocher à 'show_admin_bar'
et le code doit être le suivant :
add_filter( 'show_admin_bar', 'njengah_hide_admin_bar_for_customers', 20, 1 ); fonction njengah_hide_admin_bar_for_customers($show){ $user = wp_get_current_user(); // obtenir et définir l'utilisateur actuel $roles = ( array ) $user->roles; // obtention du rôle if( $roles[0] == 'administator'){ // Testez les rôles d'utilisateur ici en fonction des clés du tableau [0] [1] et des valeurs respectives $montrer = faux ; retourne $show ; } }
Vous pouvez également utiliser les capacités de chaque rôle pour masquer la barre d'administration et le filtre sera le suivant :
/** * Masquer la barre d'administration pour les autres rôles, attendez-vous à l'administrateur */ add_filter( 'show_admin_bar', 'njengah_hide_admin_bar_others_expect_admin', 20, 1 ); function njengah_hide_admin_bar_others_expect_admin( $show ) { if ( ! current_user_can( 'administrator' ) ) $show = false; retourne $show ; }
Ajoutez ce code au functions.php pour masquer la barre d'administration des autres rôles attendus des administrateurs.
Dernières pensées
Nous avons expliqué comment vous pouvez masquer la barre d'administration dans WordPress ou WooCommerce en utilisant différentes approches. Vous pouvez choisir l'une de ces méthodes et ajouter le code à votre functions.php. Vous pouvez également modifier davantage le code pour le rendre adapté aux différents scénarios, comme masquer la barre d'administration d'un rôle d'utilisateur personnalisé WordPress.