問題描述

SEO 插件添加了一個 metabox 到後編輯屏幕。我正在為不是編輯者或以上的用户刪除此內容。

我已經嘗試在 admin_init 上放置一個 remove_meta_box 電話,試圖刪除 $ wpseo_metabox 上的操作,但無效。

如何在不需要用户幹預的情況下刪除該 metabox(用户不應該知道 metabox 存在,因此點擊屏幕選項不是一個選項)

最佳解決方案

remove_meta_box 是一個註釋:

Because you can’t remove a meta box until it’s been added, it’s important to make sure your call to remove_meta_box() happens in the right sequence.

WordPress SEO 在默認優先級為 10 的 add_meta_boxes 操作上添加元框,運行在 admin_init 之後,因此不會刪除它們。相反,您需要掛接到 add_meta_boxes,但優先級較低 – 11,12 等

function mamaduka_remove_metabox() {
    if ( ! current_user_can( 'edit_others_posts' ) )
        remove_meta_box( 'wpseo_meta', 'post', 'normal' );
}
add_action( 'add_meta_boxes', 'mamaduka_remove_metabox', 11 );

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。