Wordpress隱藏(移除)新增/修改文章頁面中的meta boxes

對於一個多作者的`Wordpress`網站,我們有時候需要限製作者能夠接觸到的編輯選項,例如給文章加標籤,或者禁用某些插件的選項。

這個時候我們需要用到do_meta_boxes或者admin_menu這兩個hooks。注意,如果要移除插件生成的meta boxes,我們必須要使用do_meta_boxes而非admin_menu,因爲後者觸發得太早了。

好了,假設我們要給所有非adminsubadmin(自定義權限角色)用戶禁用標籤meta box,那麼在functions.php裏,我們需要添加以下代碼:

/**
* Function to remove the tag meta box from post-editing page for users other than admins and subadmins
*/

function remove_meta_boxes()
{
    if (!current_user_can('administrator') && !current_user_can('subadmin'))
    {
        remove_meta_box('tagsdiv-post_tag', 'post', 'side');
    }
}
add_action('do_meta_boxes', 'remove_meta_boxes');

可以看到,我們使用了remove_meta_box這個自帶函數來去除meta box。要注意的是第三個參數,指的是這個meta box的在屏幕上的顯示位置,有normal, sideadvanced三種選項,這裏我們的tag box位於最右邊,所以我們用了side

函數具體的參數及使用方法,可以參見:
https://codex.wordpress.org/Function_Reference/remove_meta_box
其中常見的可以移除的meta boxesid如下:

'authordiv' – Author metabox
'categorydiv' – Categories metabox.
'commentstatusdiv' – Comments status metabox (discussion)
'commentsdiv' – Comments metabox
'formatdiv' – Formats metabox
'pageparentdiv' – Attributes metabox
'postcustom' – Custom fields metabox
'postexcerpt' – Excerpt metabox
'postimagediv' – Featured image metabox
'revisionsdiv' – Revisions metabox
'slugdiv' – Slug metabox
'submitdiv' – Date, status, and update/save metabox
'tagsdiv-post_tag' – Tags metabox
'tagsdiv-{$tax-name}' - Custom taxonomies metabox
'{$tax-name}div' - Hierarchical custom taxonomies metabox
'trackbacksdiv' – Trackbacks metabox
...

那如果我們需要修改某個meta box的標題呢?最好的辦法就是先用remove_meta_box這個函數把原有的box去掉,然後再插入一個同樣的box,只是將title替換成了我們需要的標題:

function remove_meta_boxes()
{
    if (!current_user_can('administrator') && !current_user_can('subadmin'))
    {
        remove_meta_box('tagsdiv-post_tag', 'post', 'side');

        remove_meta_box('postimagediv', 'post', 'side');
        add_meta_box('postimagediv', '縮略圖片', 'post_thumbnail_meta_box', 'post', 'side', 'high');
    }
}
add_action('do_meta_boxes', 'remove_meta_boxes');

具體的函數使用請參考:
https://developer.wordpress.org/reference/functions/add_meta_box/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章