问题描述
我有 multi-author 网站,我不太舒服,允许所有成员在他们发布的帖子中输入 SEO 细节。我希望这只能看到网站的管理员。有任何想法吗?
最佳解决方案
它没有在 Yoast SEO 插件站点的 API 文档中说出 ID
是什么,我没有安装的 Yoast 的副本,但根据 yoas-plugin-dir/admin/class-metabox.php
第 144 行,注册的 meta_box 是;
add_meta_box( 'wpseo_meta', ...etc ); ...
哪个挂在同一个文件的第 32 行的 add_meta_boxes
钩上,
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 类型是您要应用此限制的帖子类型,如 post
或自定义帖子类型一个或多个!
应该做的伎俩
更新:manage_plugins
应该是 activate_plugins
– ammended 。
次佳解决方案
您可以使用 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 metabox 已挂钩后完成。
第三种解决方案
尝试将其粘贴到插件或主题 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');
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。