Answers:
它没有在Yoast SEO插件网站上的API文档中说什么ID
是什么,我没有可随时安装的Yoast副本,但是根据yoas-plugin-dir/admin/class-metabox.php
第144行,注册的meta_box是:
add_meta_box( 'wpseo_meta', ...etc ); ...
它钩在add_meta_boxes
同一文件第32行的钩子上,
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
当然,您可以从帖子编辑屏幕上的meta框本身获取ID。
您可以执行以下操作
add_action('add_meta_boxes', 'yoast_is_toast', 99);
function yoast_is_toast(){
//capability of 'manage_plugins' equals admin, therefore if NOT administrator
//hide the meta box from all other roles on the following 'post_type'
//such as post, page, custom_post_type, etc
if (!current_user_can('activate_plugins')) {
remove_meta_box('wpseo_meta', 'post_type', 'normal');
}
}
...其中帖子类型是您也希望应用此限制的帖子类型,例如post
或自定义帖子类型一个或多个!
应该做到的。
更新:manage_plugins
应该已经activate_plugins
-修改。
$post_type
在此实例中不需要var和action参数,并且不会引发通知/错误。另外,如果您包含$post_type
var,则需要在函数中其他您未定义的地方定义帖子类型,因此用户可能会运行它以使其无法正常工作!在这种情况下,将帖子类型名称(即'post'
直接传递给remove_meta_box
函数)传递是完全可以接受的。无论如何,谢谢你的建议。
$post_type
已经定义好并且可以由add_meta_boxes
动作钩子函数使用,请查看该动作钩子的Adam Brown源视图。利用$post_type
在这种情况下,将会使代码独立的post_type
编辑画面,这意味着它会删除wpseo_meta
从元框都被上发现的文章类型,并且将返回任何结果的情况下,wpseo_meta
没有找到。
post
post_type中删除元框,这就是为什么初始解决方案允许进行粒度控制的原因。但是,如果要针对所有帖子类型删除它,则使用已经定义的var $post_type
是令人满意的。我要做的是编辑我的答案,以使用您的其他示例来使用该$post_type
变量,以防有人可能希望将此变量应用于所有已注册的post_type。
根据Yoastfunctions.php
的WordPress SEO插件(API Docs),尝试将其粘贴到插件或主题文件中。
if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
add_filter('wpseo_use_page_analysis', '__return_false');
}
为避免任何错误...在尝试隐藏内容之前,此检查确保该功能存在,从而允许您停用插件,并且不会引发错误。
您可能需要加入init
才能正常工作,可以这样进行:
function wpse_init(){
if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
add_filter('wpseo_use_page_analysis', '__return_false');
}
}
add_action('init', 'wpse_init');
您可以使用remove_meta_box函数将其删除。
if ( ! current_user_can( 'edit_pages' ) ) {
add_action( 'add_meta_boxes', 'my_remove_wp_seo_meta_box', 100000 );
}
function my_remove_wp_seo_meta_box() {
remove_meta_box( 'wpseo_meta', 'post', 'normal' );
}
请注意add_action中的100000,这可以确保在挂接WP SEO元框之后完成此操作。
您可以使用Adminimize插件根据用户的角色向用户隐藏项目。自己用这个来向客户隐藏一些Yoast SEO东西,并简化后端。
http://wordpress.org/extend/plugins/adminimize/
通过为要隐藏的项目添加css选择器,可以很直接地使用它。用它来隐藏SEO页面分析选项卡(#linkdex)
yoast_is_toast()
。