如何對WordPress特定用戶角色隱藏后臺管理通知

當你在 WordPress 管理后臺界面時,你會遇到一些“管理通知(Admin Notices)”,讓你知道錯誤、更新設置、請求操作等等。

這些通知一般是WordPress內核、主題和插件添加的,倡萌之前分享過《如何為 WordPress 主題和插件添加管理通知(Admin Notices)》,如果你是開發者,可以看一下。今天我們要分享的內容是:如何對WordPress特定用戶角色隱藏后臺管理通知

為什么要對特定角色隱藏呢?舉個最簡單但是很常用的例子:你網站后臺有一些非管理員的用戶可以訪問,但是很多后臺的通知信息對他們來說都是多余的。這時候你就可以將這些信息對他們進行屏蔽。

實現的方法很簡單,將下面的代碼添加到主題的 functions.php 文件即可:

/**
 * 對非管理員角色隱藏后臺通知
 * http://www.wtfvhl.icu/hide-admin-notices-for-a-specific-role-in-wordpress.html
 */
function wpkj_hide_notices(){
    if (!current_user_can('manage_options')) { //如果你要定義其他角色,需要修改這行的條件 
        remove_all_actions( 'admin_notices' );
    }
}
add_action( 'admin_head', 'wpkj_hide_notices', 10 );

現在我們來看下邏輯:

  1. 先創建了一個名為 wpkj_hide_notices 的函數,然后掛載到 admin_head 這個鉤子,使函數生效。
  2. 在函數內部,我們使用了一個判斷條件 current_user_can('manage_options') ,意思是如果當前用戶可以 manage_options ,那就是管理員角色,然后我們在前面添加了一個感嘆號 ! ,就使條件反過來了,如果當前用戶不可以 manage_options ,那就是非管理員角色了。
  3. 判斷了如果當前用戶不是管理員角色,就執行 remove_all_actions( 'admin_notices' ) ,也就是用這個函數移除了所有后臺通知。

這里面涉及到的知識點:

  1. admin_head 鉤子
  2. current_user_can() 函數 及 用戶角色能力
  3. admin_notices 鉤子 和 remove_all_actions() 函數

倡萌

一個文科IT宅男,喜歡折騰WordPress和被它折騰 ^_^

暫無評論

發表評論