我有一个多作者的网站,我不太喜欢允许所有成员在他们发布的帖子中输入SEO详细信息。我想这将是可见的,只有该网站的管理员。有什么想法吗?
Yoast的WordPress SEO:在非管理员的帖子中隐藏Meta框
它没有在Yoast SEO插件网站的API文档中说明ID
我没有安装Yoast的副本,但根据yoas-plugin-dir/admin/class-metabox.php
第144行,注册的meta\\u框为;
add_meta_box( \'wpseo_meta\', ...etc ); ...
连接到add_meta_boxes
钩住同一文件的第32行,add_action( \'add_meta_boxes\', array( $this, \'add_meta_box\' ) );
当然,您可以从编辑后屏幕上的元框本身获取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 type是您希望也应用此限制的post类型,例如post
或自定义帖子类型一个或多个!应该做到这一点。
更新:manage_plugins
应该是activate_plugins
- 安曼德
尝试将其粘贴到插件或主题中functions.php
文件,按照WordPress SEO plugin (API Docs), 通过Yoast.
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\\u操作中的100000,这确保了这是在连接了WP SEO元框之后完成的。您可以使用Adminimize插件根据用户的角色对其隐藏项目。我自己用这个来向客户隐藏一些Yoast SEO内容,并简化后端。
通过为要隐藏的项目添加css选择器,使用起来非常简单。已使用它隐藏SEO页面分析选项卡(#linkdex)Yoast在WordPress SEO上有一个设置选项,用于为非管理员禁用WordPress SEO设置的高级部分。如果要完全禁用该框,则可以使用其他插件删除非管理员的帖子编辑器页面元素,例如,从非管理员的帖子编辑器中删除WordPress SEO框。