Jak ukryć pasek administracyjny dla klientów WooCommerce lub według ról użytkownika?
Opublikowany: 2020-02-23Ważne jest, aby ukryć pasek administratora w WooCommerce przed subskrybentami, klientami i użytkownikami niebędącymi administratorami, aby uniknąć dostępu do pulpitu WordPress. Istnieją sposoby na ukrycie paska administratora WordPress, jak podkreślono w tym samouczku – jak ukryć pasek administratora w WordPress. Te same techniki można zastosować w witrynie WooCommerce, ale z pewnymi warunkami dla każdego z przypadków.
Ukryj pasek administratora dla opcji administratora WooCommerce
Aby ukryć pasek administracyjny dla administratora, prawdopodobnie istnieje kilka wtyczek, które mogą również pomóc i będą działać również w WooCommerce.
Zanim użyjesz wtyczki, powinieneś najpierw wypróbować tę szybką opcję w panelu administratora WordPress. Ta opcja działa dobrze również w witrynach WooCommerce, nie ma różnicy.
Przejdź do ustawień profilu użytkownika administratora i sprawdź tę opcję, aby ukryć pasek administratora dla administratorów podczas przeglądania witryny.
Odznacz tę opcję i zapisz ustawienia, a następnie odwiedź interfejs, aby sprawdzić, czy pasek administratora został ukryty. Jak widać na obrazku poniżej, pasek administratora zostanie ukryty dla administratora podczas przeglądania witryny.
Jest to ważny sposób, aby zobaczyć, jak wygląda Twoja witryna, gdy nie jesteś zalogowany.
Pomaga również, gdy próbujesz debugować niektóre problemy z motywem WooCommerce, które dotyczą wyświetlania nagłówka.
Opcja ukrywania kodu kreskowego administratora WooCommerce
Aby zaimplementować to samo dla klientów i subskrybentów WooCommerce, musimy użyć filtra 'show_admin_bar'
aby zwrócić false na to, że ukrywamy pasek administratora.
Istnieje wiele sposobów wykorzystania tego haka, a także funkcja o tej samej nazwie, która działa tak samo.
Funkcja show_admin_bar( bool $show )
przyjmuje jeden parametr, który jest wartością Boolean
(prawda lub fałsz) i może być używana w następujący sposób:
show_admin_bar (fałsz );
Ten kod, po dodaniu do pliku functions.php twojego motywu, ukryje pasek administratora. Przetestowałem go z zainstalowanym motywem witryny sklepu WooCommerce i działa idealnie, ukrywa pasek administratora.
Możesz jeszcze bardziej ulepszyć tę funkcję i dodać test warunkowy, w którym zezwalasz administratorowi na przeglądanie paska administracyjnego, podczas gdy klient nie powinien go wyświetlać.
W takim przypadku warunkowo przetestowałbyś z rolą klienta lub dowolną inną rolą w witrynie, przed którą chcesz ukryć pasek administratora.
Możesz uzyskać role dostępne w witrynie WordPress z Dodaj nowego użytkownika, a ostatnia opcja ma rozwijane role:
Aby uzyskać aktualną rolę użytkownika, napisałem samouczek o tym, jak uzyskać aktualną rolę w WordPressie i możesz go użyć w przypadku, aby uzyskać rolę użytkownika klienta i ustawić funkcję show_admin_bar()
na false.
W takim przypadku poniżej znajduje się kod, którego możesz użyć, aby uzyskać bieżącą rolę użytkownika i warunkowo sprawdzić, czy rola użytkownika jest klientem.
Ten kod udostępniłem w samouczku o tym, jak uzyskać aktualną rolę użytkownika w WordPressie i możemy zmienić jego przeznaczenie w tym przypadku:
add_action( 'wp_head', 'njengah_get_current_user_role'); funkcja njengah_get_current_user_role() { if( is_user_logged_in() ) { // sprawdź, czy jest zalogowany użytkownik $użytkownik = wp_get_current_user(); // pobieranie i ustawianie bieżącego użytkownika $role = ( tablica ) $użytkownik->role; // zdobycie roli //zwróć $role; // zwróć rolę dla bieżącego użytkownika // Testuj z print_r print('<pre>'); print_r( $role); print('</pre>'); } w przeciwnym razie { zwróć tablicę(); // jeśli nie ma zalogowanego użytkownika, zwróć pustą tablicę } }
Kiedy testujesz ten kod, dodając do functions.php, powinieneś zobaczyć aktualną rolę użytkownika wyświetlaną w tablicy, jak pokazano na poniższym obrazku:
Możemy pobrać tę rolę użytkownika z tablicy za pomocą key [0]
, a gdy nieznacznie zmodyfikujemy kod i wydrukujemy rolę użytkownika, powinniśmy zobaczyć rolę użytkownika wydrukowaną tak, jak w poniższym zmodyfikowanym kodzie:
add_action( 'wp_head', 'njengah_get_current_user_role_print'); funkcja njengah_get_current_user_role_print() { if( is_user_logged_in() ) { // sprawdź, czy jest zalogowany użytkownik $użytkownik = wp_get_current_user(); // pobieranie i ustawianie bieżącego użytkownika $role = ( tablica ) $użytkownik->role; // zdobycie roli echo $role[0]; } w przeciwnym razie { zwróć tablicę(); // jeśli nie ma zalogowanego użytkownika, zwróć pustą tablicę } }
Ponieważ pomyślnie uzyskaliśmy rolę użytkownika, możemy teraz użyć jej w funkcji show_admin_bar()
warunkowo, aby ukryć pasek administratora dla określonej roli użytkownika, która może być dowolną rolą.
Na przykład ukrywamy teraz pasek administratora dla roli administratora, używając poniższego kodu:
add_action( 'wp_head', 'njengah_hide_admin_bar_for_administrator'); funkcja njengah_hide_admin_bar_for_administrator() { if( is_user_logged_in() ) { // sprawdź, czy jest zalogowany użytkownik $użytkownik = wp_get_current_user(); // pobieranie i ustawianie bieżącego użytkownika $role = ( tablica ) $użytkownik->role; // zdobycie roli if( $roles[0] == 'administrator'){ //sprawdź rolę tutaj. Możesz go zastąpić innymi rolami użytkownika. Przykładowy edytor „klient” itp. echo $role[0]; //wydrukuj rolę na ekranie w celach demonstracyjnych (powinna zostać usunięta w produkcji) show_admin_bar (fałsz ); // ukryj rolę dla tego warunku } } w przeciwnym razie { zwróć tablicę(); // jeśli nie ma zalogowanego użytkownika, zwróć pustą tablicę } }
Kiedy dodasz ten kod do pliku functions.php, zobaczysz, że rola administratora jest wyświetlana na ekranie tak jak poprzednio, a pasek administratora został ukryty warunkowo.
Możesz zastąpić tę rolę administratora klientem, a także dodać kilka testów warunkowych w następujący sposób:
add_action( 'wp_head', 'njengah_hide_admin_bar_for_customer'); funkcja njengah_hide_admin_bar_for_administrator() { if( is_user_logged_in() ) { // sprawdź, czy jest zalogowany użytkownik $użytkownik = wp_get_current_user(); // pobieranie i ustawianie bieżącego użytkownika $role = ( tablica ) $użytkownik->role; // zdobycie roli if( $roles[0] == 'klient'){ //sprawdź rolę tutaj. Możesz go zastąpić innymi rolami użytkownika. Przykładowy edytor „klient” itp. echo $role[0]; //wydrukuj rolę na ekranie w celach demonstracyjnych (powinna zostać usunięta w produkcji) show_admin_bar (fałsz ); // ukryj rolę dla tego warunku } } w przeciwnym razie { zwróć tablicę(); // jeśli nie ma zalogowanego użytkownika, zwróć pustą tablicę } }
Podobnie jak w przypadku administratora podczas testowania powinieneś zobaczyć nazwę roli wyświetlaną jako klient i ukryty pasek administratora.
Ukryj pasek administratora według bieżących możliwości użytkownika
Alternatywnym sposobem na ukrycie paska administracyjnego przed wszystkimi użytkownikami oczekującymi od administratora jest dodanie następującego kodu do functions.php :
if ( ! current_user_can( 'manage_options' ) ) { show_admin_bar (fałsz ); }
Ten kod używa testu warunkowego current_user_can()
i możesz go edytować, aby uzyskać różne uprawnienia, tak jak dla klienta powinien wyglądać następująco:
if (! current_user_can('read') ) { show_admin_bar (fałsz ); }
Odpowiada to roli subskrybenta w WordPressie. WooCommerce tworzy dwie role – Klient i Kierownik Sklepu. Klient jest równoważny subskrybentowi, więc w tym przypadku możliwości subskrybenta to „ odczyt ”.
Możesz sprawdzić wszystkie możliwości użytkowników WordPressa z – Dokumentacja ról i możliwości. Więcej informacji o rolach WooCommerce znajdziesz w dokumentach dotyczących ról i możliwości WooCommerce.
Implementacja kodu ukrywającego pasek administratora w WooCommerce
W powyższym kodzie wyjaśniliśmy szczegółowo, jak wszystko działa, aby ukryć pasek administratora w WooCommerce.
Jeśli zauważyłeś, że używam add_action()
dołączonego do 'wp_head'
do celów testowych, ale w środowisku produkcyjnym musimy użyć filtra zamiast haka akcji.
W takim przypadku filtr powinien podpiąć się pod 'show_admin_bar'
a kod powinien wyglądać następująco:
add_filter( 'show_admin_bar', 'njengah_hide_admin_bar_for_customers', 20, 1 ); funkcja njengah_hide_admin_bar_for_customers($show){ $użytkownik = wp_get_current_user(); // pobieranie i ustawianie bieżącego użytkownika $role = ( tablica ) $użytkownik->role; // zdobycie roli if( $roles[0] == 'administator'){ // Przetestuj tutaj role użytkowników na podstawie kluczy tablicy [0] [1] i odpowiednich wartości $pokaż = fałsz; return $pokaż; } }
Możesz także użyć możliwości każdej roli, aby ukryć pasek administracyjny, a filtr będzie wyglądał następująco:
/** * Ukryj pasek administratora dla innych ról, spodziewaj się administratora */ add_filter( 'show_admin_bar', 'njengah_hide_admin_bar_others_expect_admin', 20, 1 ); funkcja njengah_hide_admin_bar_others_expect_admin( $pokaż ) { if ( ! current_user_can( 'administrator' ) ) $show = false; return $pokaż; }
Dodaj ten kod do functions.php, aby ukryć pasek administratora przed innymi rolami, których oczekują administratorzy.
Końcowe przemyślenia
Opisaliśmy, w jaki sposób możesz ukryć pasek administratora w WordPress lub WooCommerce przy użyciu różnych podejść. Możesz wybrać jedną z tych metod i dodać kod do pliku functions.php. Możesz także dalej modyfikować kod, aby był odpowiedni dla różnych scenariuszy, takich jak ukrywanie paska administratora przed niestandardową rolą użytkownika WordPress.