วิธีซ่อนแถบผู้ดูแลระบบสำหรับลูกค้า WooCommerce หรือตามบทบาทของผู้ใช้

เผยแพร่แล้ว: 2020-02-23

ซ่อนแถบผู้ดูแลระบบตามบทบาท สิ่งสำคัญคือต้องซ่อนแถบผู้ดูแลระบบใน WooCommerce จากสมาชิก ลูกค้า และผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบเพื่อหลีกเลี่ยงการเข้าถึงแดชบอร์ด WordPress มีวิธีซ่อนแถบผู้ดูแลระบบของ WordPress ตามที่เน้นในบทช่วยสอนนี้ – วิธีซ่อนแถบผู้ดูแลระบบใน WordPress เทคนิคเดียวกันนี้สามารถใช้ได้ในไซต์ WooCommerce แต่มีเงื่อนไขบางประการสำหรับแต่ละกรณี

WooCommerce ซ่อนแถบผู้ดูแลระบบสำหรับลูกค้าหรือสมาชิก

ซ่อนแถบผู้ดูแลระบบสำหรับตัวเลือกผู้ดูแลระบบ WooCommerce

หากต้องการซ่อนแถบผู้ดูแลระบบสำหรับผู้ดูแลระบบ อาจมีปลั๊กอินบางตัวที่สามารถช่วยและจะทำงานกับ WooCommerce ได้เช่นกัน

ก่อนที่คุณจะใช้ปลั๊กอิน คุณควรลองใช้ตัวเลือกด่วนนี้ในแดชบอร์ดผู้ดูแลระบบ WordPress ก่อน ตัวเลือกนี้ใช้งานได้ดีสำหรับไซต์ WooCommerce เช่นกัน ไม่มีอะไรแตกต่างกัน

ไปที่การตั้งค่าโปรไฟล์ผู้ใช้ของผู้ดูแลระบบและเลือกตัวเลือกนี้เพื่อซ่อนแถบผู้ดูแลระบบสำหรับผู้ดูแลระบบเมื่อดูไซต์ WooCommerce ซ่อนแถบผู้ดูแลระบบสำหรับลูกค้าหรือสมาชิก

ยกเลิกการเลือกตัวเลือกนี้และบันทึกการตั้งค่า จากนั้นไปที่ส่วนหน้าเพื่อดูว่าแถบผู้ดูแลระบบถูกซ่อนไว้หรือไม่ ดังที่คุณเห็นในภาพด้านล่างแถบผู้ดูแลระบบจะถูกซ่อนสำหรับผู้ใช้ที่เป็นผู้ดูแลระบบเมื่อดูไซต์

WooCommerce ซ่อนแถบผู้ดูแลระบบสำหรับลูกค้าหรือสมาชิก

นี่เป็นวิธีสำคัญในการดูว่าเว็บไซต์ของคุณมีลักษณะอย่างไรเมื่อคุณไม่ได้เข้าสู่ระบบ

นอกจากนี้ยังช่วยเมื่อคุณพยายามดีบักปัญหาธีม WooCommerce ที่เกี่ยวข้องกับการแสดงส่วนหัว

WooCommerce ซ่อนตัวเลือกบาร์โค้ดของผู้ดูแลระบบ

ในการใช้งานแบบเดียวกันสำหรับลูกค้า WooCommerce และสมาชิก เราจำเป็นต้องใช้ตัวกรอง 'show_admin_bar' เพื่อคืนค่าเท็จที่เราซ่อนแถบผู้ดูแลระบบ

คุณสามารถใช้ตะขอนี้ได้หลายวิธี และยังมีฟังก์ชันชื่อเดียวกันที่ทำงานเหมือนกัน

ฟังก์ชัน show_admin_bar( bool $show ) รับหนึ่งพารามิเตอร์ที่เป็น Boolean ( True หรือ False ) และสามารถใช้ได้ดังนี้:

 show_admin_bar( เท็จ );

รหัสนี้เมื่อเพิ่มลงในไฟล์ functions.php ของธีมของคุณแล้ว จะซ่อนแถบผู้ดูแลระบบ ฉันได้ทดสอบกับธีมหน้าร้าน WooCommerce แล้วและทำงานได้อย่างสมบูรณ์โดยซ่อนแถบผู้ดูแลระบบ

WooCommerce ซ่อนแถบผู้ดูแลระบบสำหรับลูกค้าหรือสมาชิก

คุณสามารถปรับปรุงฟังก์ชันนี้เพิ่มเติมและเพิ่มการทดสอบแบบมีเงื่อนไขซึ่งคุณอนุญาตให้ผู้ดูแลระบบดูแถบผู้ดูแลระบบในขณะที่ลูกค้าไม่ควรดู

ในกรณีนี้ คุณจะต้องทดสอบตามเงื่อนไขกับบทบาทลูกค้าหรือบทบาทอื่นๆ บนไซต์ของคุณที่คุณต้องการซ่อนแถบผู้ดูแลระบบ

คุณสามารถรับบทบาทที่มีอยู่ในไซต์ WordPress ของคุณได้จาก เพิ่มผู้ใช้ใหม่ และตัวเลือกสุดท้ายมีดรอปดาวน์บทบาท:

บทบาทของผู้ใช้ wordpress

เพื่อให้ได้บทบาทผู้ใช้ปัจจุบัน ฉันเขียนบทช่วยสอนเกี่ยวกับวิธีการ รับบทบาทปัจจุบันใน WordPress และคุณสามารถใช้ในกรณีเพื่อรับบทบาทผู้ใช้ของลูกค้าและตั้งค่า show_admin_bar() เป็นเท็จ

ในกรณีนี้ ต่อไปนี้คือรหัสที่คุณสามารถใช้เพื่อรับบทบาทผู้ใช้ปัจจุบันและตรวจสอบว่าบทบาทของผู้ใช้เป็นลูกค้าตามเงื่อนไขหรือไม่

รหัสนี้ที่ฉันแชร์ในบทช่วยสอนเกี่ยวกับ วิธีรับบทบาทผู้ใช้ปัจจุบันใน WordPress และเราสามารถนำไปใช้ใหม่ได้ในกรณีนี้:

 add_action( 'wp_head', 'njengah_get_current_user_role');

ฟังก์ชัน njengah_get_current_user_role () {

  if( is_user_logged_in() ) { // ตรวจสอบว่ามีผู้ใช้ที่ล็อกอินอยู่หรือไม่

   $ผู้ใช้ = wp_get_current_user(); // รับ & การตั้งค่าผู้ใช้ปัจจุบัน
   $roles = ( array ) $user->บทบาท; //รับบทบาท

   // คืนค่าบทบาท $; // ส่งคืนบทบาทสำหรับผู้ใช้ปัจจุบัน

     // ทดสอบด้วย print_r
      print('<pre>');
      print_r( $บทบาท);
       พิมพ์('</pre>');

    } อื่น {

          ส่งคืนอาร์เรย์ (); // หากไม่มีผู้ใช้ที่ล็อกอินจะส่งคืนอาร์เรย์ว่าง

   }

}

เมื่อคุณทดสอบโค้ดนี้โดยเพิ่มไปที่ functions.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() ) { // ตรวจสอบว่ามีผู้ใช้ที่ล็อกอินอยู่หรือไม่

          $ผู้ใช้ = wp_get_current_user(); // รับ & การตั้งค่าผู้ใช้ปัจจุบัน

          $roles = ( array ) $user->บทบาท; //รับบทบาท

            เสียงสะท้อน $roles[0];

              } อื่น {

              ส่งคืนอาร์เรย์ (); // หากไม่มีผู้ใช้ที่ล็อกอินจะส่งคืนอาร์เรย์ว่าง

       }

}

เนื่องจากเราได้รับบทบาทผู้ใช้เรียบร้อยแล้ว เราจึงสามารถใช้ใน show_admin_bar() แบบมีเงื่อนไขเพื่อซ่อนแถบผู้ดูแลระบบสำหรับบทบาทของผู้ใช้เฉพาะซึ่งสามารถมีบทบาทใดก็ได้

สำหรับภาพประกอบ ตอนนี้เราซ่อนแถบผู้ดูแลระบบสำหรับบทบาทผู้ดูแลระบบโดยใช้รหัสด้านล่าง:

 add_action( 'wp_head', 'njengah_hide_admin_bar_for_administrator');

ฟังก์ชัน njengah_hide_admin_bar_for_administrator () {

     if( is_user_logged_in() ) { // ตรวจสอบว่ามีผู้ใช้ที่ล็อกอินอยู่หรือไม่

       $ผู้ใช้ = wp_get_current_user(); // รับ & การตั้งค่าผู้ใช้ปัจจุบัน

         $roles = ( array ) $user->บทบาท; //รับบทบาท

          if( $roles[0] == 'administrator'){ //ตรวจสอบบทบาทที่นี่ คุณสามารถแทนที่ด้วยบทบาทผู้ใช้อื่นๆ ตัวอย่าง 'ลูกค้า' บรรณาธิการ ฯลฯ

           เสียงสะท้อน $roles[0]; //พิมพ์บทบาทไปยังหน้าจอเพื่อวัตถุประสงค์ในการสาธิต (ควรถูกลบออกในเวอร์ชันที่ใช้งานจริง)

           show_admin_bar( เท็จ ); // ซ่อนบทบาทสำหรับเงื่อนไขนี้

     }

        } อื่น {

           ส่งคืนอาร์เรย์ (); // หากไม่มีผู้ใช้ที่ล็อกอินจะส่งคืนอาร์เรย์ว่าง

     }

}

เมื่อคุณเพิ่มรหัสนี้ลงในไฟล์ functions.php คุณจะเห็นบทบาทผู้ดูแลระบบปรากฏบนหน้าจอเหมือนเมื่อก่อน และแถบผู้ดูแลระบบถูกซ่อนตามเงื่อนไข

คุณสามารถแทนที่บทบาทผู้ดูแลระบบนี้ด้วยลูกค้า และคุณยังสามารถเพิ่มการทดสอบตามเงื่อนไขหลายอย่างในเงื่อนไขดังต่อไปนี้:

 add_action( 'wp_head', 'njengah_hide_admin_bar_for_customer');

ฟังก์ชัน njengah_hide_admin_bar_for_administrator () {

if( is_user_logged_in() ) { // ตรวจสอบว่ามีผู้ใช้ที่ล็อกอินอยู่หรือไม่

              $ผู้ใช้ = wp_get_current_user(); // รับ & การตั้งค่าผู้ใช้ปัจจุบัน

                $roles = ( array ) $user->บทบาท; //รับบทบาท

                    if( $roles[0] == 'customer'){ //ตรวจสอบบทบาทที่นี่ คุณสามารถแทนที่ด้วยบทบาทผู้ใช้อื่นๆ ตัวอย่าง 'ลูกค้า' บรรณาธิการ ฯลฯ

                เสียงสะท้อน $roles[0]; //พิมพ์บทบาทไปยังหน้าจอเพื่อวัตถุประสงค์ในการสาธิต (ควรถูกลบออกในเวอร์ชันที่ใช้งานจริง)

                      show_admin_bar( เท็จ ); // ซ่อนบทบาทสำหรับเงื่อนไขนี้

        }

        } อื่น {

                ส่งคืนอาร์เรย์ (); // หากไม่มีผู้ใช้ที่ล็อกอินจะส่งคืนอาร์เรย์ว่าง

      }

}

ในกรณีของผู้ดูแลระบบเมื่อคุณทดสอบ คุณควรเห็นชื่อของบทบาทที่แสดงเป็นลูกค้าและแถบผู้ดูแลระบบที่ซ่อนอยู่

ซ่อนแถบผู้ดูแลระบบตามความสามารถของผู้ใช้ปัจจุบัน

วิธีอื่นในการซ่อนแถบผู้ดูแลระบบจากผู้ใช้ทุกคนคาดว่าผู้ดูแลระบบ คุณสามารถเพิ่มโค้ดต่อไปนี้ใน functions.php :

 if ( ! current_user_can ( 'manage_options' ) ) {

   show_admin_bar( เท็จ );

}

รหัสนี้ใช้การทดสอบแบบมีเงื่อนไข current_user_can() และคุณสามารถแก้ไขให้เป็นสิทธิ์ที่แตกต่างกัน เช่น สำหรับลูกค้าที่ควรจะเป็นดังนี้:

 if ( ! current_user_can ( 'อ่าน' ) ) {

   show_admin_bar( เท็จ );

}

ซึ่งเทียบเท่ากับบทบาทของสมาชิกใน WordPress WooCommerce สร้างสองบทบาท – ผู้จัดการลูกค้าและร้านค้า ลูกค้ามีค่าเท่ากับผู้สมัครสมาชิก ดังนั้นในกรณีนี้ ความสามารถของผู้สมัครสมาชิกคือ ' อ่าน '

คุณสามารถตรวจสอบความสามารถทั้งหมดของผู้ใช้ WordPress ได้จากเอกสารประกอบ - บทบาทและความสามารถ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับบทบาท WooCommerce จากเอกสารบทบาทและความสามารถของ WooCommerce

การใช้รหัสเพื่อซ่อนแถบผู้ดูแลระบบใน WooCommerce

ในโค้ดด้านบน เราได้อธิบายรายละเอียดว่าทุกอย่างทำงานอย่างไรเพื่อซ่อนแถบผู้ดูแลระบบใน WooCommerce

หากคุณสังเกตว่าฉันใช้ add_action() ที่ต่อกับ 'wp_head' เพื่อวัตถุประสงค์ในการทดสอบ แต่ในการใช้งานจริง เราจำเป็นต้องใช้ตัวกรองแทน action hook

ในกรณีนี้ ตัวกรองควรเชื่อมต่อกับ 'show_admin_bar' และโค้ดควรเป็นดังนี้:

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

ฟังก์ชั่น njengah_hide_admin_bar_for_customers($ แสดง){

           $ผู้ใช้ = wp_get_current_user(); // รับ & การตั้งค่าผู้ใช้ปัจจุบัน

            $roles = ( array ) $user->บทบาท; //รับบทบาท

               if( $roles[0] == 'administator'){ // ทดสอบบทบาทผู้ใช้ที่นี่ตามคีย์อาร์เรย์ [0] [1] และค่าที่เกี่ยวข้อง

                       $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;

     ส่งคืน $ แสดง;

    }

เพิ่มโค้ดนี้ใน functions.php เพื่อซ่อนแถบผู้ดูแลระบบจากบทบาทอื่นๆ ที่ผู้ดูแลระบบคาดหวัง

ความคิดสุดท้าย

เราได้สรุปวิธีการซ่อนแถบผู้ดูแลระบบใน WordPress หรือ WooCommerce โดยใช้วิธีการต่างๆ คุณสามารถเลือกวิธีใดวิธีหนึ่งเหล่านี้และเพิ่มโค้ดลงใน functions.php ของคุณ คุณยังสามารถแก้ไขโค้ดเพิ่มเติมเพื่อให้เหมาะสมกับสถานการณ์ต่างๆ เช่น ซ่อนแถบผู้ดูแลระบบจากบทบาทผู้ใช้ที่กำหนดเองของ WordPress