Come nascondere la barra di amministrazione per i clienti WooCommerce o per ruoli utente

Pubblicato: 2020-02-23

Nascondi barra di amministrazione per ruoli È importante nascondere la barra di amministrazione in WooCommerce da abbonati, clienti e utenti non amministratori per evitare l'accesso alla dashboard di WordPress. Esistono modi per nascondere la barra di amministrazione di WordPress come evidenziato in questo tutorial: come nascondere la barra di amministrazione in WordPress. Queste stesse tecniche possono essere impiegate in un sito WooCommerce ma con alcune condizioni per ciascuno dei casi.

WooCommerce Nascondi la barra di amministrazione per clienti o abbonati

Nascondi la barra di amministrazione per l'opzione di amministrazione di WooCommerce

Per nascondere la barra di amministrazione per l'amministratore, ci sono probabilmente alcuni plugin che possono anche aiutare e funzioneranno anche per WooCommerce.

Prima di utilizzare un plug-in dovresti prima provare questa rapida opzione nella dashboard di amministrazione di WordPress. Questa opzione funziona bene anche per i siti WooCommerce, non c'è differenza.

Vai alle impostazioni del profilo utente dell'amministratore e controlla questa opzione per nascondere la barra di amministrazione per gli amministratori durante la visualizzazione del sito. WooCommerce Nascondi la barra di amministrazione per clienti o abbonati

Deseleziona questa opzione e salva le impostazioni, quindi visita il frontend per vedere se la barra di amministrazione è stata nascosta. Come puoi vedere nell'immagine sotto, la barra di amministrazione sarà nascosta per l'utente amministratore durante la visualizzazione del sito.

WooCommerce Nascondi la barra di amministrazione per clienti o abbonati

Questo è un modo importante per dare un'occhiata all'aspetto del tuo sito quando non sei connesso.

Aiuta anche quando si tenta di eseguire il debug di alcuni problemi del tema WooCommerce relativi alla visualizzazione dell'intestazione.

WooCommerce Nascondi l'opzione del codice a barre dell'amministratore

Per implementare lo stesso per i clienti e gli abbonati di WooCommerce, dobbiamo utilizzare il filtro 'show_admin_bar' per restituire false per nascondere la barra di amministrazione.

Ci sono vari modi in cui puoi usare questo hook e c'è anche una funzione con lo stesso nome che funziona allo stesso modo.

La funzione show_admin_bar( bool $show ) accetta un parametro Boolean ( True o False ) e può essere utilizzato come segue:

 show_admin_bar(falso);

Questo codice, una volta aggiunto al file functions.php del tuo tema, nasconderà la barra di amministrazione. L'ho testato con il tema WooCommerce storefront installato e funziona perfettamente nasconde la barra di amministrazione.

WooCommerce Nascondi la barra di amministrazione per clienti o abbonati

Puoi migliorare ulteriormente questa funzione e aggiungere un test condizionale in cui consenti all'amministratore di visualizzare la barra di amministrazione mentre il cliente non dovrebbe visualizzarla.

In questo caso, eseguiresti un test condizionale con il ruolo cliente o qualsiasi altro ruolo sul tuo sito da cui desideri nascondere la barra di amministrazione.

Puoi ottenere i ruoli disponibili nel tuo sito WordPress da Aggiungi nuovo utente e l'ultima opzione ha il menu a discesa Ruoli:

ruoli utente wordpress

Per ottenere il ruolo utente corrente, ho scritto un tutorial su come ottenere il ruolo corrente in WordPress e puoi usarlo nel caso per ottenere il ruolo utente del cliente e impostare la funzione show_admin_bar() su false.

In questo caso, quello che segue è il codice che puoi usare per ottenere il ruolo utente corrente e verificare in modo condizionale se il ruolo utente è un cliente.

Questo codice l'ho condiviso nel tutorial su come ottenere il ruolo utente corrente in WordPress e possiamo riutilizzarlo in questo caso:

 add_action( 'wp_head', 'njengah_get_current_user_role');

funzione njengah_get_current_user_role() {

  if( is_user_logged_in() ) { // controlla se c'è un utente che ha effettuato l'accesso

   $utente = wp_get_utente_corrente(); // ottenere e impostare l'utente corrente
   $ruoli = (array) $utente->ruoli; // ottenere il ruolo

   //restituisce $ruoli; // restituisce il ruolo per l'utente corrente

     // Prova con print_r
      print('<pre>');
      print_r($ruoli);
       print('</pre>');

    } altro {

          restituisce array(); // se non ci sono utenti registrati restituiscono un array vuoto

   }

}

Quando testi questo codice aggiungendolo a functions.php, dovresti vedere il ruolo utente corrente visualizzato nell'array come mostrato nell'immagine seguente:

WooCommerce Nascondi l'opzione del codice a barre dell'amministratore

Possiamo ottenere questo ruolo utente dall'array usando la key [0] e quando modifichiamo leggermente il codice e stampiamo il ruolo utente, dovremmo vedere il ruolo utente stampato come nel seguente codice modificato:

 add_action( 'wp_head', 'njengah_get_current_user_role_print');

funzione njengah_get_current_user_role_print() {

        if( is_user_logged_in() ) { // controlla se c'è un utente che ha effettuato l'accesso

          $utente = wp_get_utente_corrente(); // ottenere e impostare l'utente corrente

          $ruoli = (array) $utente->ruoli; // ottenere il ruolo

            eco $ruoli[0];

              } altro {

              restituisce array(); // se non ci sono utenti registrati restituiscono un array vuoto

       }

}

Poiché abbiamo ottenuto con successo il ruolo utente, ora possiamo usarlo nella funzione show_admin_bar() in modo condizionale per nascondere la barra di amministrazione per un ruolo utente specifico che può essere qualsiasi ruolo.

A titolo illustrativo, ora nascondiamo la barra di amministrazione per il ruolo di amministratore utilizzando il codice seguente:

 add_action( 'wp_head', 'njengah_hide_admin_bar_for_administrator');

funzione njengah_hide_admin_bar_for_administrator() {

     if( is_user_logged_in() ) { // controlla se c'è un utente che ha effettuato l'accesso

       $utente = wp_get_utente_corrente(); // ottenere e impostare l'utente corrente

         $ruoli = (array) $utente->ruoli; // ottenere il ruolo

          if( $roles[0] == 'amministratore'){ //controlla il ruolo qui. Puoi sostituirlo con altri ruoli utente. Esempio di editor "cliente" ecc

           eco $ruoli[0]; //stampa il ruolo su schermo a scopo dimostrativo (dovrebbe essere rimosso in produzione)

           show_admin_bar(falso); // Nascondi il ruolo per questa condizione

     }

        } altro {

           restituisce array(); // se non ci sono utenti registrati restituiscono un array vuoto

     }

}

Quando aggiungi questo codice al file functions.php, vedrai il ruolo di amministratore visualizzato sullo schermo come prima e la barra di amministrazione è stata nascosta in modo condizionale.

Puoi sostituire questo ruolo di amministratore con il cliente e puoi anche aggiungere diversi test condizionali nella condizione come segue:

 add_action( 'wp_head', 'njengah_hide_admin_bar_for_customer');

funzione njengah_hide_admin_bar_for_administrator() {

if( is_user_logged_in() ) { // controlla se c'è un utente che ha effettuato l'accesso

              $utente = wp_get_utente_corrente(); // ottenere e impostare l'utente corrente

                $ruoli = (array) $utente->ruoli; // ottenere il ruolo

                    if( $roles[0] == 'cliente'){ //controlla il ruolo qui. Puoi sostituirlo con altri ruoli utente. Esempio di editor "cliente" ecc

                eco $ruoli[0]; //stampa il ruolo su schermo a scopo dimostrativo (dovrebbe essere rimosso in produzione)

                      show_admin_bar(falso); // Nascondi il ruolo per questa condizione

        }

        } altro {

                restituisce array(); // se non ci sono utenti registrati restituiscono un array vuoto

      }

}

Come nel caso dell'amministratore, quando esegui il test dovresti vedere il nome del ruolo visualizzato come cliente e la barra dell'amministratore nascosta.

Nascondi la barra di amministrazione in base alle capacità dell'utente corrente

Un modo alternativo per nascondere la barra di amministrazione a tutti gli utenti prevede che l'amministratore possa aggiungere il seguente codice a functions.php:

 if ( ! current_user_can( 'manage_options' ) ) {

   show_admin_bar(falso);

}

Questo codice utilizza il test condizionale current_user_can() e puoi modificarlo con privilegi diversi come per un cliente dovrebbe essere il seguente:

 if ( ! current_user_can( 'read' ) ) {

   show_admin_bar(falso);

}

Questo è equivalente al ruolo di un abbonato in WordPress. WooCommerce crea due ruoli: Cliente e Shop Manager. Il cliente è equivalente all'abbonato, quindi in questo caso le capacità di un abbonato sono " lette ".

Puoi controllare tutte le capacità degli utenti di WordPress da – Documentazione su ruoli e capacità. Puoi saperne di più sui ruoli di WooCommerce dai documenti sui ruoli e sulle capacità di WooCommerce.

Implementazione del codice per nascondere la barra di amministrazione in WooCommerce

Nel codice sopra, abbiamo spiegato in dettaglio come funziona tutto per nascondere la barra di amministrazione in WooCommerce.

Se hai notato che stavo usando un add_action() allegato a 'wp_head' a scopo di test ma in produzione, dobbiamo usare un filtro invece di un hook di azione.

In questo caso, il filtro dovrebbe agganciarsi a 'show_admin_bar' e il codice dovrebbe essere il seguente:

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

funzione njengah_hide_admin_bar_for_customers($mostra){

           $utente = wp_get_utente_corrente(); // ottenere e impostare l'utente corrente

            $ruoli = (array) $utente->ruoli; // ottenere il ruolo

               if( $roles[0] == 'amministratore'){ // Testa i ruoli utente qui in base alle chiavi dell'array [0] [1] e ai rispettivi valori

                       $mostra = falso;

                              restituisci $mostra;

               }

}

Puoi anche utilizzare le funzionalità di ciascun ruolo per nascondere la barra di amministrazione e il filtro sarà il seguente:

 /**

* Nascondi la barra di amministrazione per altri ruoli si aspettano amministratore

*/

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

funzione njengah_hide_admin_bar_others_expect_admin ($ mostra) {

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

     restituisci $mostra;

    }

Aggiungi questo codice a functions.php per nascondere la barra di amministrazione da altri ruoli che si aspettano amministratori.

Pensieri finali

Abbiamo delineato come nascondere la barra di amministrazione in WordPress o WooCommerce utilizzando vari approcci. Puoi scegliere uno di questi metodi e aggiungere il codice al tuo functions.php. Puoi anche modificare ulteriormente il codice per renderlo adatto a diversi scenari come nascondere la barra di amministrazione da un ruolo utente personalizzato di WordPress.