删除非管理员的更新NAG

时间:2016-06-29 作者:j08691

我正在尝试删除或隐藏非管理员用户的更新NAG。作为一名管理员,我看到:

enter image description here

我看到的处理这个问题的流行答案是:

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可用!请立即更新),但第二条消息对非管理员可见:

enter image description here

这两条消息都包装在<div class="update-nag">, 所以one option 是修改上述代码块,以使用CSS隐藏nag:

echo \'<style>.update-nag {display: none}</style>\';
但我觉得这很尴尬。是否有一种方法可以挂接到操作或筛选中,并删除非管理员用户的所有更新nag消息?请不要推荐第三方插件。

3 个回复
最合适的回答,由SO网友:bravokeyl 整理而成

在里面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.

基本上,我们有两个更新NAG,可以在admin-filters.php

add_action( \'admin_notices\', \'update_nag\',      3  );
add_action( \'admin_notices\', \'maintenance_nag\', 10 );
因此,要删除我们可以使用的第二条消息(如果您只想让非管理员使用,请检查当前用户角色)

remove_action( \'admin_notices\', \'maintenance_nag\', 10 );
多站点使用

remove_action( \'network_admin_notices\', \'maintenance_nag\', 10 );

SO网友:T.Todua

下面是完整的代码,目前似乎可以使用:

add_action(\'admin_head\', function() {
    if(!current_user_can(\'manage_options\')){
        remove_action( \'admin_notices\', \'update_nag\',      3  );
        remove_action( \'admin_notices\', \'maintenance_nag\', 10 );
    }
});

SO网友:Stephen Harris

@bravokeyl可能是解决您眼前问题的最佳答案。

但要解决以下问题:

是否有一种方法可以挂接到操作或筛选中,并删除非管理员用户的所有更新nag消息?

没有。WordPress中的Nag消息只是添加到admin_notices 将一些HTML打印到页面的挂钩。它们实际上与来自WordPress或任何其他插件或主题的错误或成功消息或任何其他“通知”相同。

通过CSS隐藏nags很有技巧。由于一些插件/主题会错误地使用.update-nag 类来为自己的通知提供所需的样式。

一种不太老套的方法是显式删除您不想打印通知的每个回调(针对非管理员)。但这需要(可能是非常低的成本)维护该列表,并确保没有“漏网”的通知。

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果