WooCommerceの顧客またはユーザーの役割ごとに管理バーを非表示にする方法

公開: 2020-02-23

役割で管理バーを非表示 WordPressダッシュボードへのアクセスを避けるために、WooCommerceの管理バーをサブスクライバー、顧客、および管理者以外のユーザーから非表示にすることが重要です。 このチュートリアルで強調表示されているように、WordPress管理バーを非表示にする方法があります-WordPressで管理バーを非表示にする方法。これらの同じ手法をWooCommerceサイトで使用できますが、それぞれの場合にいくつかの条件があります。

WooCommerceは、顧客またはサブスクライバーの管理バーを非表示にします

WooCommerce管理オプションの管理バーを非表示

管理者の管理バーを非表示にするために、おそらくWooCommerceでも役立つプラグインがいくつかあります。

プラグインを使用する前に、まずWordPress管理ダッシュボードでこのクイックオプションを試してみてください。このオプションはWooCommerceサイトでもうまく機能し、違いはありません。

管理者のユーザープロファイル設定に移動し、このオプションをチェックして、サイトを表示するときに管理者の管理者バーを非表示にします。 WooCommerceは、顧客またはサブスクライバーの管理バーを非表示にします

このオプションのチェックを外して設定を保存し、フロントエンドにアクセスして管理バーが非表示になっているかどうかを確認します。 下の画像でわかるように、サイトを表示すると、管理バーは管理者ユーザーに対して非表示になります。

WooCommerceは、顧客またはサブスクライバーの管理バーを非表示にします

これは、ログインしていないときにサイトがどのように表示されるかを垣間見るための重要な方法です。

また、ヘッダーの表示に関連するWooCommerceテーマの問題をデバッグしようとしているときにも役立ちます。

WooCommerce管理者バーコードオプションを非表示

WooCommerceの顧客とサブスクライバーに同じことを実装するには、 'show_admin_bar'フィルターを使用して、管理バーを非表示にするfalseを返す必要があります。

このフックの使い方はいろいろありますし、同じ名前の同じように機能する関数もあります。

関数show_admin_bar( bool $show )は、 Boolean (TrueまたはFalse)の1つのパラメーターを取り、次のように使用できます。

 show_admin_bar(false);

このコードをテーマのfunctions.phpファイルに追加すると、管理バーが非表示になります。 WooCommerceストアフロントテーマをインストールしてテストしましたが、完全に機能し、管理バーが非表示になります。

WooCommerceは、顧客またはサブスクライバーの管理バーを非表示にします

この機能をさらに改善し、顧客が管理バーを表示してはならないときに管理者が管理バーを表示できるようにする条件付きテストを追加できます。

この場合、管理者バーを非表示にするサイト上の顧客の役割またはその他の役割を条件付きでテストします。

WordPressサイトで利用可能な役割は、[新しいユーザーの追加]から取得できます。最後のオプションには、[役割]ドロップダウンがあります。

ワードプレスのユーザーロール

現在のユーザーロールを取得するために、WordPressで現在のロールを取得する方法についてのチュートリアルを作成しました。このチュートリアルを使用して、顧客のユーザーロールを取得し、 show_admin_bar()関数をfalseに設定できます。

この場合、以下は、現在のユーザーロールを取得し、ユーザーロールが顧客であるかどうかを条件付きで確認するために使用できるコードです。

WordPressで現在のユーザーロールを取得する方法についてのチュートリアルで共有したこのコードは、この場合に再利用できます。

 add_action( 'wp_head'、 'njengah_get_current_user_role');

関数njengah_get_current_user_role(){

  if(is_user_logged_in()){//ログインしているユーザーがいるかどうかを確認する

   $ user = wp_get_current_user(); //現在のユーザーの取得と設定
   $ roles =(配列)$ user-> roles; //役割を取得する

   // $ rolesを返します; //現在のユーザーのロールを返します

     // print_rでテストします
      print( '<pre>');
      print_r($ roles);
       print( '</ pre>');

    } それ以外 {

          array();を返します。 //ログインしているユーザーがいない場合は、空の配列を返します

   }

}

関数.phpに追加してこのコードをテストすると、次の画像に示すように、現在のユーザーロールが配列に表示されます。

WooCommerce管理者バーコードオプションを非表示

key [0]を使用して配列からこのユーザーロールを取得できます。コードを少し変更してユーザーロールを出力すると、次の変更されたコードのようにユーザーロールが出力されます。

 add_action( 'wp_head'、 'njengah_get_current_user_role_print');

関数njengah_get_current_user_role_print(){

        if(is_user_logged_in()){//ログインしているユーザーがいるかどうかを確認する

          $ user = wp_get_current_user(); //現在のユーザーの取得と設定

          $ roles =(配列)$ user-> roles; //役割を取得する

            エコー$ roles [0];

              } それ以外 {

              array();を返します。 //ログインしているユーザーがいない場合は、空の配列を返します

       }

}

ユーザーロールを正常に取得したので、 show_admin_bar()関数で条件付きで使用して、任意のロールである特定のユーザーロールの管理バーを非表示にできます。

説明のために、以下のコードを使用して、管理者ロールの管理者バーを非表示にします。

 add_action( 'wp_head'、 'njengah_hide_admin_bar_for_administrator');

関数njengah_hide_admin_bar_for_administrator(){

     if(is_user_logged_in()){//ログインしているユーザーがいるかどうかを確認する

       $ user = wp_get_current_user(); //現在のユーザーの取得と設定

         $ roles =(配列)$ user-> roles; //役割を取得する

          if($ roles [0] == 'administrator'){//ここでロールを確認します。 他のユーザーロールに置き換えることができます。 例「顧客」エディターなど

           エコー$ roles [0]; //デモの目的でロールを画面に出力します(本番環境では削除する必要があります)

           show_admin_bar(false); //この条件の役割を非表示にします

     }

        } それ以外 {

           array();を返します。 //ログインしているユーザーがいない場合は、空の配列を返します

     }

}

このコードをfunctions.phpファイルに追加すると、以前と同じように管理者の役割が画面に表示され、管理者バーが条件付きで非表示になっていることがわかります。

この管理者の役割を顧客に置き換えることができます。また、次のように、条件にいくつかの条件付きテストを追加することもできます。

 add_action( 'wp_head'、 'njengah_hide_admin_bar_for_customer');

関数njengah_hide_admin_bar_for_administrator(){

if(is_user_logged_in()){//ログインしているユーザーがいるかどうかを確認する

              $ user = wp_get_current_user(); //現在のユーザーの取得と設定

                $ roles =(配列)$ user-> roles; //役割を取得する

                    if($ roles [0] == 'customer'){//ここでロールを確認します。 他のユーザーロールに置き換えることができます。 例「顧客」エディターなど

                エコー$ roles [0]; //デモの目的でロールを画面に出力します(本番環境では削除する必要があります)

                      show_admin_bar(false); //この条件の役割を非表示にします

        }

        } それ以外 {

                array();を返します。 //ログインしているユーザーがいない場合は、空の配列を返します

      }

}

管理者の場合と同様に、テストすると、顧客として表示される役割の名前と非表示の管理バーが表示されます。

現在のユーザー機能で管理バーを非表示にする

管理者を期待するすべてのユーザーから管理バーを非表示にする別の方法として、functions.phpに次のコードを追加できます。

 if(!current_user_can( 'manage_options')){

   show_admin_bar(false);

}

このコードはcurrent_user_can()条件付きテストを使用しており、顧客の場合と同様に、次のようにさまざまな権限に編集できます。

 if(!current_user_can( 'read')){

   show_admin_bar(false);

}

これは、WordPressでのサブスクライバーの役割に相当します。 WooCommerceは、顧客とショップマネージャーの2つの役割を作成します。 顧客は加入者と同等であるため、この場合、加入者の機能は「読み取り」です。

WordPressユーザーのすべての機能は、役割と機能のドキュメントから確認できます。 WooCommerceの役割について詳しくは、WooCommerceの役割と機能に関するドキュメントをご覧ください。

WooCommerceで管理バーを非表示にするコードの実装

上記のコードでは、WooCommerceで管理バーを非表示にするためにすべてがどのように機能するかを詳細に説明しました。

テスト目的で'wp_head'にアタッチされたadd_action()を使用していることに気付いた場合、本番環境では、アクションフックの代わりにフィルターを使用する必要があります。

この場合、フィルターは'show_admin_bar'にフックする必要があり、コードは次のようになります。

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

関数njengah_hide_admin_bar_for_customers($ show){

           $ user = wp_get_current_user(); //現在のユーザーの取得と設定

            $ roles =(配列)$ user-> roles; //役割を取得する

               if($ roles [0] == 'administator'){//配列キー[0] [1]とそれぞれの値に基づいて、ここでユーザーロールをテストします

                       $ show = false;

                              $ showを返します。

               }

}

各ロールの機能を使用して管理バーを非表示にすることもできます。フィルターは次のようになります。

 / **

*他の役割の管理バーを非表示にする管理者を期待する

* /

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

関数njengah_hide_admin_bar_others_expect_admin($ show){

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

     $ showを返します。

    }

このコードをfunctions.phpに追加して、管理者を期待する他の役割から管理バーを非表示にします。

最終的な考え

さまざまなアプローチを使用して、WordPressまたはWooCommerceで管理バーを非表示にする方法の概要を説明しました。 これらの方法のいずれかを選択して、functions.phpにコードを追加できます。 コードをさらに変更して、WordPressのカスタムユーザーロールから管理バーを非表示にするなど、さまざまなシナリオに適したものにすることもできます。