So verstecken Sie die Admin-Leiste für WooCommerce-Kunden oder nach Benutzerrollen
Veröffentlicht: 2020-02-23Es ist wichtig, die Admin-Leiste in WooCommerce vor Abonnenten, Kunden und Nicht-Admin-Benutzern zu verbergen, um den Zugriff auf das WordPress-Dashboard zu vermeiden. Es gibt Möglichkeiten, die WordPress-Admin-Leiste auszublenden, wie in diesem Tutorial hervorgehoben – wie man die Admin-Leiste in WordPress ausblendet. Dieselben Techniken können auf einer WooCommerce-Site angewendet werden, jedoch mit einigen Bedingungen für jeden Fall.
Ausblenden der Admin-Leiste für die WooCommerce-Admin-Option
Um die Admin-Leiste für den Administrator auszublenden, gibt es wahrscheinlich einige Plugins, die ebenfalls helfen können und auch für WooCommerce funktionieren.
Bevor Sie ein Plugin verwenden, sollten Sie zuerst diese schnelle Option im WordPress-Admin-Dashboard ausprobieren. Diese Option funktioniert auch gut für WooCommerce-Sites, es gibt keinen Unterschied.
Gehen Sie zu den Administrator-Benutzerprofileinstellungen und überprüfen Sie diese Option, um die Admin-Leiste für Administratoren beim Anzeigen der Website auszublenden.
Deaktivieren Sie diese Option und speichern Sie die Einstellungen. Besuchen Sie dann das Frontend, um zu sehen, ob die Admin-Leiste ausgeblendet wurde. Wie Sie im Bild unten sehen können, wird die Admin-Leiste für den Admin-Benutzer beim Anzeigen der Website ausgeblendet.
Dies ist eine wichtige Methode, um einen Eindruck davon zu bekommen, wie Ihre Website aussieht, wenn Sie nicht eingeloggt sind.
Es hilft auch, wenn Sie versuchen, einige WooCommerce-Designprobleme zu debuggen, die sich auf die Anzeige der Kopfzeile beziehen.
WooCommerce Admin-Barcode-Option ausblenden
Um dasselbe für die WooCommerce-Kunden und -Abonnenten zu implementieren, müssen wir den Filter 'show_admin_bar'
, um false zurückzugeben, dass wir die Admin-Leiste ausblenden.
Es gibt eine Vielzahl von Möglichkeiten, wie Sie diesen Hook verwenden können, und es gibt auch eine Funktion mit demselben Namen, die genauso funktioniert.
Die Funktion show_admin_bar( bool $show )
nimmt einen Boolean
Parameter (entweder True oder False ) und kann wie folgt verwendet werden:
show_admin_bar(falsch);
Wenn dieser Code der Datei functions.php Ihres Designs hinzugefügt wird, wird die Admin-Leiste ausgeblendet. Ich habe es mit dem installierten WooCommerce Storefront-Theme getestet und es funktioniert perfekt, es verbirgt die Admin-Leiste.
Sie können diese Funktion weiter verbessern und einen bedingten Test hinzufügen, bei dem Sie dem Administrator erlauben, die Admin-Leiste anzuzeigen, während der Kunde sie nicht sehen sollte.
In diesem Fall würden Sie bedingt mit der Kundenrolle oder einer anderen Rolle auf Ihrer Website testen, vor der Sie die Admin-Leiste ausblenden möchten.
Sie können die auf Ihrer WordPress-Site verfügbaren Rollen über „Neuen Benutzer hinzufügen“ abrufen, und die letzte Option enthält das Dropdown-Menü „Rollen“:
Um die aktuelle Benutzerrolle zu erhalten, habe ich ein Tutorial geschrieben, wie man die aktuelle Rolle in WordPress erhält, und Sie können es in dem Fall verwenden, um die Kundenbenutzerrolle zu erhalten und die Funktion show_admin_bar()
auf false zu setzen.
In diesem Fall können Sie mit dem folgenden Code die aktuelle Benutzerrolle abrufen und bedingt prüfen, ob es sich bei der Benutzerrolle um einen Kunden handelt.
Diesen Code, den ich im Tutorial zum Abrufen der aktuellen Benutzerrolle in WordPress geteilt habe, können wir in diesem Fall wiederverwenden:
add_action( 'wp_head', 'njengah_get_current_user_role'); Funktion njengah_get_current_user_role() { if( is_user_logged_in() ) { // prüfen, ob ein angemeldeter Benutzer vorhanden ist $user = wp_get_current_user(); // Abrufen und Einstellen des aktuellen Benutzers $rollen = ( array ) $user->rollen; // Erhalt der Rolle // $rollen zurückgeben; // die Rolle für den aktuellen Benutzer zurückgeben // Mit print_r testen print('<pre>'); print_r( $rollen); print('</pre>'); } anders { Array zurückgeben (); // Wenn kein angemeldeter Benutzer vorhanden ist, wird ein leeres Array zurückgegeben } }
Wenn Sie diesen Code testen, indem Sie ihn zur functions.php hinzufügen, sollten Sie die aktuelle Benutzerrolle im Array sehen, wie im folgenden Bild gezeigt:
Wir können diese Benutzerrolle mit dem key [0]
aus dem Array abrufen, und wenn wir den Code leicht ändern und die Benutzerrolle ausdrucken, sollten wir die Benutzerrolle wie im folgenden modifizierten Code ausgedruckt sehen:
add_action( 'wp_head', 'njengah_get_current_user_role_print'); Funktion njengah_get_current_user_role_print() { if( is_user_logged_in() ) { // prüfen, ob ein angemeldeter Benutzer vorhanden ist $user = wp_get_current_user(); // Abrufen und Einstellen des aktuellen Benutzers $rollen = ( array ) $user->rollen; // Erhalt der Rolle echo $roles[0]; } anders { Array zurückgeben (); // Wenn kein angemeldeter Benutzer vorhanden ist, wird ein leeres Array zurückgegeben } }
Da wir die Benutzerrolle erfolgreich erhalten haben, können wir sie jetzt in der Funktion show_admin_bar()
bedingt verwenden, um die Admin-Leiste für eine bestimmte Benutzerrolle auszublenden, die eine beliebige Rolle sein kann.
Zur Veranschaulichung blenden wir jetzt die Admin-Leiste für die Administratorrolle mit dem folgenden Code aus:
add_action( 'wp_head', 'njengah_hide_admin_bar_for_administrator'); Funktion njengah_hide_admin_bar_for_administrator() { if( is_user_logged_in() ) { // prüfen, ob ein angemeldeter Benutzer vorhanden ist $user = wp_get_current_user(); // Abrufen und Einstellen des aktuellen Benutzers $rollen = ( array ) $user->rollen; // Erhalt der Rolle if( $roles[0] == 'administrator'){ //Überprüfen Sie hier die Rolle. Sie können sie durch andere Benutzerrollen ersetzen. Beispiel 'Kunden'-Editor etc echo $roles[0]; // Drucken Sie die Rolle für Demozwecke auf dem Bildschirm aus (sollte in der Produktion entfernt werden) show_admin_bar(falsch); // verstecke die Rolle für diese Bedingung } } anders { Array zurückgeben (); // Wenn kein angemeldeter Benutzer vorhanden ist, wird ein leeres Array zurückgegeben } }
Wenn Sie diesen Code zur Datei functions.php hinzufügen, sehen Sie, dass die Administratorrolle wie zuvor auf dem Bildschirm angezeigt wird und die Admin-Leiste bedingt ausgeblendet wurde.
Sie können diese Administratorrolle durch den Kunden ersetzen und Sie können der Bedingung auch mehrere bedingte Tests wie folgt hinzufügen:
add_action( 'wp_head', 'njengah_hide_admin_bar_for_customer'); Funktion njengah_hide_admin_bar_for_administrator() { if( is_user_logged_in() ) { // prüfen, ob ein angemeldeter Benutzer vorhanden ist $user = wp_get_current_user(); // Abrufen und Einstellen des aktuellen Benutzers $rollen = ( array ) $user->rollen; // Erhalt der Rolle if( $roles[0] == 'customer'){ //Überprüfen Sie hier die Rolle. Sie können sie durch andere Benutzerrollen ersetzen. Beispiel 'Kunden'-Editor etc echo $roles[0]; // Drucken Sie die Rolle für Demozwecke auf dem Bildschirm aus (sollte in der Produktion entfernt werden) show_admin_bar(falsch); // verstecke die Rolle für diese Bedingung } } anders { Array zurückgeben (); // Wenn kein angemeldeter Benutzer vorhanden ist, wird ein leeres Array zurückgegeben } }
Wie im Fall des Administrators sollte beim Testen der Name der Rolle als Kunde angezeigt und die Admin-Leiste ausgeblendet werden.
Ausblenden der Admin-Leiste nach aktuellen Benutzerfunktionen
Eine alternative Möglichkeit, die Admin-Leiste vor allen Benutzern zu verbergen, außer Admin, können Sie der functions.php den folgenden Code hinzufügen:
if ( ! aktueller_benutzer_kann( 'manage_options' ) ) { show_admin_bar(falsch); }
Dieser Code verwendet den bedingten Test current_user_can()
und Sie können ihn auf verschiedene Privilegien bearbeiten, wie für einen Kunden sollte es wie folgt sein:
if ( ! aktueller_benutzer_kann( 'lesen' ) ) { show_admin_bar(falsch); }
Dies entspricht der Rolle eines Abonnenten in WordPress. WooCommerce erstellt zwei Rollen – Kunden- und Shop-Manager. Der Kunde ist gleichbedeutend mit dem Abonnenten, daher werden in diesem Fall die Fähigkeiten eines Abonnenten „ gelesen “.
Sie können alle Fähigkeiten von WordPress-Benutzern aus der Dokumentation zu Rollen und Fähigkeiten einsehen. Weitere Informationen zu WooCommerce-Rollen finden Sie in den Dokumenten zu WooCommerce-Rollen und -Funktionen.
Implementieren des Codes zum Ausblenden der Admin-Leiste in WooCommerce
Im obigen Code haben wir ausführlich erklärt, wie alles funktioniert, um die Admin-Leiste in WooCommerce auszublenden.
Wenn Sie bemerkt haben, dass ich zu Testzwecken ein add_action()
verwendet habe, das an 'wp_head'
angehängt ist, aber in der Produktion müssen wir einen Filter anstelle eines Action-Hooks verwenden.
In diesem Fall sollte der Filter auf 'show_admin_bar'
und der Code sollte wie folgt lauten:
add_filter( 'show_admin_bar', 'njengah_hide_admin_bar_for_customers', 20, 1 ); Funktion njengah_hide_admin_bar_for_customers($show){ $user = wp_get_current_user(); // Abrufen und Einstellen des aktuellen Benutzers $rollen = ( array ) $user->rollen; // Erhalt der Rolle if( $roles[0] == 'administator'){ // Testen Sie hier die Benutzerrollen basierend auf den Array-Schlüsseln [0] [1] und den entsprechenden Werten $zeigen = falsch; gib $show zurück; } }
Sie können auch die Funktionen jeder Rolle verwenden, um die Admin-Leiste auszublenden, und der Filter sieht wie folgt aus:
/** * Ausblenden der Admin-Leiste für andere Rollen außer Admin */ add_filter( 'show_admin_bar', 'njengah_hide_admin_bar_others_expect_admin', 20, 1 ); Funktion njengah_hide_admin_bar_others_expect_admin( $show ) { if ( ! current_user_can( 'administrator' ) ) $show = false; gib $show zurück; }
Fügen Sie diesen Code zur functions.php hinzu, um die Admin-Leiste vor anderen Rollen außer Administratoren zu verbergen.
Abschließende Gedanken
Wir haben skizziert, wie Sie die Admin-Leiste in WordPress oder WooCommerce mit verschiedenen Ansätzen ausblenden können. Sie können eine dieser Methoden wählen und den Code zu Ihrer functions.php hinzufügen. Sie können den Code auch weiter ändern, um ihn für die verschiedenen Szenarien geeignet zu machen, z. B. das Ausblenden der Admin-Leiste vor einer benutzerdefinierten WordPress-Benutzerrolle.