Como faço para desativar as notificações de atualização do painel para os assinantes?

2

Para usuários registrados em meu blog, se eles clicarem no painel, receberão um alerta sugerindo que digam ao administrador do site (eu) que a nova versão do WordPress está disponível.

Tudo o que quero é ocultar os alertas do painel dos inscritos. Onde posso encontrar o código para mudar isso?

Eu encontrei um site aqui que sugere que estou procurando o código:

add_action('admin_head','addDashboardAlert');

Mas não sei onde procurá-lo.

UPDATE

Encontrei um código mais relevante para tornar os alertas dependentes do papel do usuário, aqui :

if (!current_user_can('delete_posts')) {
    
por bozdoz 11.10.2012 / 23:03

4 respostas

2

você pode incluir alguns css personalizados em seu functions.php que ocultam o elemento update_nag (notificações), dependendo da capacidade do usuário:

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>';
    }
}
    
por Clearmedia 12.10.2012 / 04:12
9

Atualizando esta resposta o código original abaixo removerá a tela de propaganda, mas fará o ping do servidor para atualizações em todo carregamento, graças a @ El Yobo, veja a atualização abaixo.

Isso desativará as atualizações principais e a tela de propaganda para todos, exceto superadministradores.

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' ); 
}  

Para desativar todas as notificações de plug-in;

remove_action( 'load-update-core.php', 'wp_update_plugins' );
add_filter( 'pre_site_transient_update_plugins', '__return_null' );

Para remover um plug-in específico, você pode tentar isso, mas ele não está 100% funcionando, dependendo do plug-in;

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' );

Atualizado

Isso desabilita as atualizações completamente (não consigo fazê-lo funcionar com base nas funções do usuário) E interrompe o ping para atualizações (ele emitirá um aviso do PHP sem saber como corrigir isso sem alterar o núcleo). / p>

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');
    
por Wyck 12.10.2012 / 00:08
1

Eu não consegui trabalhar com esses scripts acima, então pesquisei um pouco mais e achei isso:

//Remove update notifications from sub-users
add_action('admin_head','admin_css');
function admin_css()
{
if( current_user_can('YOUR_SELECTED_ROLE'))//Choose the correct role where you need to block update nag
{
add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) );
}
}
    
por Horacsio 23.06.2013 / 16:45
0

Derivando da resposta do @wyck, todos os avisos de atualização e avisos do PHP estão ocultos usando o script abaixo. Basta colocar isso no seu 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');
    
por Ricky Boyce 06.08.2015 / 01:48