Cum să ascundeți bara de administrare pentru clienții WooCommerce sau după rolurile de utilizator

Publicat: 2020-02-23

Ascundeți bara de administrare după roluri Este important să ascundeți bara de administrare din WooCommerce de abonați, clienți și utilizatori non-administratori pentru a evita accesul la tabloul de bord WordPress. Există modalități de a ascunde bara de administrare WordPress, așa cum este evidențiată în acest tutorial – cum să ascundeți bara de administrare în WordPress. Aceleași tehnici pot fi folosite într-un site WooCommerce, dar cu anumite condiții pentru fiecare dintre cazuri.

WooCommerce Ascundeți bara de administrare pentru clienți sau abonați

Ascundeți bara de administrare pentru opțiunea de administrare WooCommerce

Pentru a ascunde bara de administrare pentru administrator, probabil că există unele pluginuri care pot ajuta și vor funcționa și pentru WooCommerce.

Înainte de a utiliza un plugin, ar trebui să încercați mai întâi această opțiune rapidă în tabloul de bord de administrare WordPress. Această opțiune funcționează bine și pentru site-urile WooCommerce, nu există nicio diferență.

Accesați setările profilului utilizatorului administrator și verificați această opțiune pentru a ascunde bara de administrare pentru administratori atunci când vizualizați site-ul. WooCommerce Ascundeți bara de administrare pentru clienți sau abonați

Debifați această opțiune și salvați setările, apoi vizitați interfața pentru a vedea dacă bara de administrare a fost ascunsă. După cum puteți vedea în imaginea de mai jos, bara de administrare va fi ascunsă pentru utilizatorul admin la vizualizarea site-ului.

WooCommerce Ascundeți bara de administrare pentru clienți sau abonați

Aceasta este o modalitate importantă de a vedea cum arată site-ul dvs. atunci când nu sunteți conectat.

De asemenea, vă ajută atunci când încercați să depanați unele probleme legate de tema WooCommerce care se referă la afișarea antetului.

WooCommerce Ascunde opțiunea codului de bare admin

Pentru a implementa același lucru pentru clienții și abonații WooCommerce, trebuie să folosim filtrul 'show_admin_bar' pentru a reveni la fals la faptul că ascundem bara de administrare.

Există o varietate de moduri în care puteți utiliza acest cârlig și există, de asemenea, o funcție cu același nume care funcționează la fel.

Funcția show_admin_bar( bool $show ) preia un parametru care este Boolean (fie adevărat, fie fals) și poate fi utilizat după cum urmează:

 show_admin_bar( false );

Acest cod, atunci când este adăugat la fișierul functions.php al temei dvs., va ascunde bara de administrare. L-am testat cu tema de vitrină WooCommerce instalată și funcționează perfect, ascunde bara de administrare.

WooCommerce Ascundeți bara de administrare pentru clienți sau abonați

Puteți îmbunătăți în continuare această funcție și puteți adăuga un test condiționat în care permiteți administratorului să vadă bara de administrare în timp ce clientul nu ar trebui să o vadă.

În acest caz, ați testa în mod condiționat rolul de client sau orice alt rol de pe site-ul dvs. de care doriți să ascundeți bara de administrare.

Puteți obține rolurile disponibile pe site-ul dvs. WordPress din Adăugare utilizator nou, iar ultima opțiune are meniul derulant Roluri:

rolurile de utilizator wordpress

Pentru a obține rolul de utilizator curent, am scris un tutorial despre cum să obțineți rolul actual în WordPress și îl puteți utiliza în caz pentru a obține rolul de utilizator de client și pentru a seta funcția show_admin_bar() la false.

În acest caz, următorul este codul pe care îl puteți utiliza pentru a obține rolul de utilizator curent și pentru a verifica condiționat dacă rolul de utilizator este un client.

Acest cod l-am împărtășit în tutorialul despre cum să obțineți rolul de utilizator actual în WordPress și îl putem reutiliza în acest caz:

 add_action( 'wp_head', 'njengah_get_current_user_role');

funcția njengah_get_current_user_role() {

  if( is_user_logged_in() ) { // verificați dacă există un utilizator conectat

   $user = wp_get_current_user(); // obținerea și setarea utilizatorului curent
   $roluri = ( array ) $utilizator->roluri; // obţinerea rolului

   //return $roluri; // returnează rolul utilizatorului curent

     // Testează cu print_r
      print('<pre>');
      print_r( $roluri);
       print('</pre>');

    } altfel {

          return array(); // dacă nu există niciun utilizator conectat returnează o matrice goală

   }

}

Când testați acest cod adăugând la functions.php, ar trebui să vedeți rolul utilizatorului curent afișat în matrice, așa cum se arată în imaginea de mai jos:

WooCommerce Ascunde opțiunea codului de bare admin

Putem obține acest rol de utilizator din matrice folosind key [0] și când modificăm ușor codul și imprimăm rolul de utilizator, ar trebui să vedem rolul de utilizator tipărit ca în următorul cod modificat:

 add_action( 'wp_head', 'njengah_get_current_user_role_print');

funcția njengah_get_current_user_role_print() {

        if( is_user_logged_in() ) { // verifică dacă există un utilizator conectat

          $user = wp_get_current_user(); // obținerea și setarea utilizatorului curent

          $roluri = ( array ) $utilizator->roluri; // obţinerea rolului

            echo $roles[0];

              } altfel {

              return array(); // dacă nu există niciun utilizator conectat returnează o matrice goală

       }

}

Deoarece am obținut cu succes rolul de utilizator, acum îl putem folosi în funcția show_admin_bar() în mod condiționat pentru a ascunde bara de administrare pentru un anumit rol de utilizator care poate fi orice rol.

Pentru ilustrare, acum ascundem bara de administrare pentru rolul de administrator folosind codul de mai jos:

 add_action( 'wp_head', 'njengah_hide_admin_bar_for_administrator');

funcția njengah_hide_admin_bar_for_administrator() {

     if( is_user_logged_in() ) { // verificați dacă există un utilizator conectat

       $user = wp_get_current_user(); // obținerea și setarea utilizatorului curent

         $roluri = ( array ) $utilizator->roluri; // obţinerea rolului

          if( $roles[0] == 'administrator'){ //verificați rolul aici. Îl puteți înlocui cu alte roluri de utilizator. Exemplu de editor „client” etc

           echo $roles[0]; //tipărește rolul pe ecran în scopuri demonstrative (ar trebui eliminat în producție)

           show_admin_bar( false ); // ascunde rolul pentru această condiție

     }

        } altfel {

           return array(); // dacă nu există niciun utilizator conectat returnează o matrice goală

     }

}

Când adăugați acest cod în fișierul functions.php, veți vedea că rolul de administrator este afișat pe ecran ca înainte și bara de administrare a fost ascunsă condiționat.

Puteți înlocui acest rol de administrator cu clientul și puteți adăuga, de asemenea, mai multe teste condiționate în condiția după cum urmează:

 add_action( 'wp_head', 'njengah_hide_admin_bar_for_customer');

funcția njengah_hide_admin_bar_for_administrator() {

if( is_user_logged_in() ) { // verifică dacă există un utilizator conectat

              $user = wp_get_current_user(); // obținerea și setarea utilizatorului curent

                $roluri = ( array ) $utilizator->roluri; // obţinerea rolului

                    if( $roles[0] == 'client'){ //verificați rolul aici. Îl puteți înlocui cu alte roluri de utilizator. Exemplu de editor „client” etc

                echo $roles[0]; //tipărește rolul pe ecran în scopuri demonstrative (ar trebui eliminat în producție)

                      show_admin_bar( false ); // ascunde rolul pentru această condiție

        }

        } altfel {

                return array(); // dacă nu există niciun utilizator conectat returnează o matrice goală

      }

}

Ca și în cazul administratorului, atunci când testați, ar trebui să vedeți numele rolului afișat ca client și bara de administrare ascunsă.

Ascundeți bara de administrare în funcție de capacitățile utilizatorului curent

O modalitate alternativă de a ascunde bara de administrare de toți utilizatorii care se așteaptă la admin, puteți adăuga următorul cod la functions.php:

 if ( ! current_user_can( 'manage_options' ) ) {

   show_admin_bar( false );

}

Acest cod folosește testul condiționat current_user_can() și îl puteți edita cu diferite privilegii, ca pentru un client, ar trebui să fie după cum urmează:

 if ( ! current_user_can( 'citește' ) ) {

   show_admin_bar( false );

}

Acest lucru este echivalent cu rolul unui abonat în WordPress. WooCommerce creează două roluri – Client și Manager magazin. Clientul este echivalent cu abonatul, astfel încât, în acest caz, capacitățile unui abonat sunt „ citire ”.

Puteți verifica toate capacitățile utilizatorilor WordPress din – documentația Roluri și Capabilități. Puteți afla mai multe despre rolurile WooCommerce din documentele privind rolurile și capabilitățile WooCommerce.

Implementarea codului pentru a ascunde bara de administrare în WooCommerce

În codul de mai sus, am explicat în detaliu cum funcționează totul pentru a ascunde bara de administrare în WooCommerce.

Dacă ați observat că am folosit un add_action() atașat la 'wp_head' în scop de testare, dar în producție, trebuie să folosim un filtru în loc de un cârlig de acțiune.

În acest caz, filtrul ar trebui să fie conectat la 'show_admin_bar' iar codul ar trebui să fie după cum urmează:

 add_filter( 'show_admin_bar', 'njengah_hide_admin_bar_for_customers', 20, 1 );

funcția njengah_hide_admin_bar_for_customers($show){

           $user = wp_get_current_user(); // obținerea și setarea utilizatorului curent

            $roluri = ( array ) $utilizator->roluri; // obţinerea rolului

               if( $roles[0] == 'administrator'){ // Testează aici rolurile utilizatorului pe baza cheilor matricei [0] [1] și a valorilor respective

                       $show = fals;

                              returnează $show;

               }

}

De asemenea, puteți utiliza capacitățile fiecărui rol pentru a ascunde bara de administrare, iar filtrul va fi după cum urmează:

 /**

* Ascundeți bara de administrare pentru alte roluri, așteptați admin

*/

add_filter( 'show_admin_bar', 'njengah_hide_admin_bar_others_expect_admin', 20, 1);

funcția njengah_hide_admin_bar_others_expect_admin( $show ) {

    if ( ! current_user_can( 'administrator' ) ) $show = false;

     returnează $show;

    }

Adăugați acest cod la functions.php pentru a ascunde bara de administrare de alte roluri care se așteaptă de la administratori.

Gânduri finale

Am subliniat cum puteți ascunde bara de administrare în WordPress sau WooCommerce folosind diverse abordări. Puteți alege oricare dintre aceste metode și puteți adăuga codul în functions.php. De asemenea, puteți modifica codul în continuare pentru a-l face potrivit pentru diferitele scenarii, cum ar fi ascunderea barei de administrare dintr-un rol de utilizator personalizat WordPress.