问题描述
我正在尝试删除或隐藏 non-admin 用户的更新 nags 。作为管理员,我看到:
我看到处理这个流行的答案说使用:
function hide_update_nag() {
if ( !current_user_can('update_core') ) {
remove_action( 'admin_notices', 'update_nag', 3 );
}
}
add_action( 'admin_head', 'hide_update_nag', 1 );
这适用于删除第一个消息 (WordPress 4.5.3 可用!请现在更新),但离开第二个可见 non-admins:
两个消息都包装在一个<div class="update-nag">
中,所以 one option 是修改上面的代码块,使用 CSS 来隐藏 nag:
echo '<style>.update-nag {display: none}</style>';
但这对我来说感觉很棒。有没有办法挂钩一个动作或过滤器,并删除所有的更新消息为 non-admin 用户?没有 third-party 插件推荐。
最佳解决方案
在 wp-admin/includes/update.php
文件
if ( current_user_can('update_core') )
$msg = sprintf( __('An automated WordPress update has failed to complete - <a href="%s">please attempt the update again now</a>.'), 'update-core.php' );
else
$msg = __('An automated WordPress update has failed to complete! Please notify the site administrator.');
我们可以看到基于当前用户角色的消息是不同的,这是 maintenance_nag
。
基本上我们有两个更新,可以在 admin-filters.php
中找到
add_action( 'admin_notices', 'update_nag', 3 );
add_action( 'admin_notices', 'maintenance_nag', 10 );
所以要删除我们可以使用的第二个消息 (如果你只想要这个 non-admins,也检查当前的用户角色)
remove_action( 'admin_notices', 'maintenance_nag', 10 );
对于 multi-site 使用
remove_action( 'network_admin_notices', 'maintenance_nag', 10 );
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。