如何隱藏 WooCommerce 客戶或按用戶角色的管理欄
已發表: 2020-02-23向訂閱者、客戶和非管理員用戶隱藏 WooCommerce 中的管理欄以避免訪問 WordPress 儀表板非常重要。 本教程中突出顯示了隱藏 WordPress 管理欄的方法——如何在 WordPress 中隱藏管理欄。這些相同的技術可以在 WooCommerce 網站中使用,但每種情況都有一些條件。
隱藏 WooCommerce 管理選項的管理欄
要為管理員隱藏管理欄,可能有一些插件也可以提供幫助,並且也適用於 WooCommerce。
在使用插件之前,您應該首先在 WordPress 管理儀表板中嘗試這個快速選項。這個選項也適用於 WooCommerce 網站,沒有區別。
轉到管理員用戶配置文件設置並檢查此選項以在查看站點時為管理員隱藏管理欄。
取消選中此選項並保存設置,然後訪問前端以查看管理欄是否已隱藏。 正如您在下圖中看到的那樣,在查看站點時,管理欄將對管理員用戶隱藏。
這是了解您未登錄時網站外觀的重要方式。
當您嘗試調試與標題顯示相關的一些 WooCommerce 主題問題時,它也會有所幫助。
WooCommerce 隱藏管理員條形碼選項
要為 WooCommerce 客戶和訂閱者實現相同的功能,我們需要使用'show_admin_bar'
過濾器來返回 false,即我們隱藏了管理欄。
有多種方法可以使用這個鉤子,還有一個同名的函數可以工作。
函數show_admin_bar( bool $show )
採用一個Boolean
參數( True 或 False ),可按如下方式使用:
show_admin_bar(假);
此代碼添加到主題的 functions.php 文件時,將隱藏管理欄。 我已經安裝了 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; // 獲取角色 //返回$角色; // 返回當前用戶的角色 // 使用 print_r 進行測試 打印('<pre>'); print_r($角色); 打印('</pre>'); } 別的 { 返回數組(); // 如果沒有登錄用戶返回空數組 } }
當您通過添加到 functions.php 來測試此代碼時,您應該會看到當前用戶角色顯示在數組中,如下圖所示:
我們可以使用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; // 獲取角色 迴聲$角色[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() ) { // 檢查是否有登錄用戶 $user = wp_get_current_user(); // 獲取&設置當前用戶 $roles = ( 數組 ) $user->roles; // 獲取角色 if( $roles[0] == 'administrator'){ //這裡檢查角色。 您可以將其替換為其他用戶角色。 示例“客戶”編輯器等 迴聲$角色[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() ) { // 檢查是否有登錄用戶 $user = wp_get_current_user(); // 獲取&設置當前用戶 $roles = ( 數組 ) $user->roles; // 獲取角色 if( $roles[0] == 'customer'){ //在這裡查看角色。 您可以將其替換為其他用戶角色。 示例“客戶”編輯器等 迴聲$角色[0]; //將角色打印到屏幕以用於演示目的(應在生產中刪除) show_admin_bar(假); //隱藏這個條件的角色 } } 別的 { 返回數組(); // 如果沒有登錄用戶返回空數組 } }
與測試時的管理員案例一樣,您應該看到角色名稱顯示為客戶,並且隱藏了管理欄。
按當前用戶功能隱藏管理欄
對所有用戶隱藏管理欄的另一種方法期望管理員您可以將以下代碼添加到 functions.php :
如果(!current_user_can('manage_options')){ show_admin_bar(假); }
此代碼使用current_user_can()
條件測試,您可以將其編輯為不同的權限,例如對於客戶,它應該如下所示:
if ( ! current_user_can( 'read' ) ) { show_admin_bar(假); }
這相當於 WordPress 中訂閱者的角色。 WooCommerce 創建了兩個角色——客戶和商店經理。 客戶相當於訂閱者,因此在這種情況下,訂閱者的能力是“讀取”。
您可以從 – Roles & Capabilities 文檔中查看 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] 和各自的值測試這裡的用戶角色 $顯示=假; 返回$顯示; } }
您還可以使用每個角色的功能來隱藏管理欄,過濾器將如下所示:
/** *隱藏其他角色的管理欄期望管理員 */ 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 自定義用戶角色隱藏管理欄。