如何为订阅者禁用仪表板更新通知?

时间:2012-10-11 作者:bozdoz

对于我的博客的注册用户,如果他们单击仪表板,他们会收到一条警报,建议他们告诉网站管理员(我)新版本的WordPress可用。

我只想对订阅者隐藏仪表板警报。在哪里可以找到更改此的代码?

我找到一个网站here 这表明我正在寻找代码:

add_action(\'admin_head\',\'addDashboardAlert\');
但我不知道去哪里找。

更新我找到了一些更相关的代码,使警报以用户角色为条件,here:

if (!current_user_can(\'delete_posts\')) {

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

您可以在函数中包含一些自定义css。根据用户能力隐藏update\\u nag(notifications)元素的php:

add_action(\'admin_head\',\'admin_css\');
function admin_css()
{
if(!current_user_can(\'administrator\'))//not and admin
{
    echo \'<style>\';
        echo \'.update_nag{display:none}\';
        echo \'</style>\';
    }
}

SO网友:Wyck

更新此答案下面的原始代码将删除nag屏幕,但它会在每次加载时ping服务器以获取更新,多亏了@El Yobo,请参阅下面的更新。

这将对除超级管理员以外的所有人禁用核心更新和nag屏幕。

add_action( \'after_setup_theme\', \'remove_core_updates\' );
function remove_core_updates()
{
    if ( ! current_user_can( \'update_core\' ) ) {
        return;
    }
    add_action( \'init\', create_function( \'$a\', "remove_action( \'init\', \'wp_version_check\' );" ), 2 );
    add_filter( \'pre_option_update_core\', \'__return_null\' );
    add_filter( \'pre_site_transient_update_core\', \'__return_null\' ); 
}  
禁用所有插件通知;

remove_action( \'load-update-core.php\', \'wp_update_plugins\' );
add_filter( \'pre_site_transient_update_plugins\', \'__return_null\' );
要删除一个特定的插件,你可以尝试这样做,但它不是百分之百的工作取决于插件;

function ya_remove_plugin_update($value) {
     $plugin_relative_path = "plugin_relative_path"; // change this to your plugin
     unset( $value->response[ $plugin_relative_path ] );
     return $value;
}
add_filter( \'site_transient_update_plugins\', \'ya_remove_plugin_update\' );
<小时>

Updated

这将完全禁用更新(我无法根据用户角色使其工作)并停止ping更新(它将抛出一个PHP警告,不知道如何在不改变核心的情况下修复此问题)。

function remove_core_updates(){

        global $wp_version;
        return (object) array(
            \'last_checked\' => time(),
            \'version_checked\' => $wp_version,
            );
}
add_filter(\'pre_site_transient_update_core\', \'remove_core_updates\');
add_filter(\'pre_site_transient_update_plugins\', \'remove_core_updates\');
add_filter(\'pre_site_transient_update_themes\', \'remove_core_updates\');

SO网友:Horacsio

我没有使用上面的脚本,所以我进行了更多的研究,发现了以下内容:

//Remove update notifications from sub-users
add_action(\'admin_head\',\'admin_css\');
function admin_css()
{
    // Choose the correct role where you need to block update nag
    if( current_user_can(\'YOUR_SELECTED_ROLE\')) {
        add_filter( \'pre_site_transient_update_core\', \'__return_null\' );
    }
}

SO网友:Ricky Boyce

根据@wyck的回答,现在使用下面的脚本隐藏所有更新通知和PHP警告。把这个放在你的functions.php

function remove_core_updates() {
  global $wp_version;
  return (object) array(
    \'last_checked\' => time(),
    \'version_checked\' => $wp_version,
  );
}
add_filter(\'pre_site_transient_update_core\', \'remove_core_updates\');
add_filter(\'pre_site_transient_update_plugins\', \'remove_core_updates\');
add_filter(\'pre_site_transient_update_themes\', \'remove_core_updates\');


function remove_menu() {
  global $submenu;
  if (isset($submenu[\'index.php\'][10]))
    unset($submenu[\'index.php\'][10]); // Removes \'Updates\'.
}
add_action(\'admin_menu\', \'remove_menu\');

结束