问题描述

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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。