Remova os nags de atualização para não administradores [duplicados]

10

Estou tentando remover ou ocultar os problemas da atualização para usuários não administradores. Como administrador, vejo:

Arespostapopularqueeuviparalidarcomissodizparausar:

functionhide_update_nag(){if(!current_user_can('update_core')){remove_action('admin_notices','update_nag',3);}}add_action('admin_head','hide_update_nag',1);

Issofuncionabempararemoveraprimeiramensagem(oWordPress4.5.3estádisponível!Atualizeagora),masdeixaosegundovisívelparaosnão-administradores:

Asduasmensagenssãoagrupadasem<divclass="update-nag"> , portanto, uma opção é modificar o pedaço de código acima para usar o CSS para ocultar o problema com:

echo '<style>.update-nag {display: none}</style>';

Mas isso parece ruim para mim. Existe uma maneira de conectar-se a uma ação ou filtro e remover TODAS as mensagens de atualização para usuários não administradores? Nenhuma recomendação de plug-in de terceiros, por favor.

    
por j08691 29.06.2016 / 15:59

3 respostas

14

Em wp-admin/includes/update.php file

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

Podemos ver que as mensagens são diferentes com base na função de usuário atual e isso é maintenance_nag .

Basicamente, temos dois problemas de atualização e podem ser encontrados em admin-filters.php

add_action( 'admin_notices', 'update_nag',      3  );
add_action( 'admin_notices', 'maintenance_nag', 10 );

Então, para remover a segunda mensagem, podemos usar (também verificar a atual função do usuário se você quiser isso apenas para não administradores)

remove_action( 'admin_notices', 'maintenance_nag', 10 );

Para uso em vários locais

remove_action( 'network_admin_notices', 'maintenance_nag', 10 );
    
por bravokeyl 29.06.2016 / 16:24
1

@bravokeyl é provavelmente a melhor resposta para o seu problema imediato.

Mas para abordar o seguinte:

  

Existe uma maneira de se ligar a uma ação ou filtro e remover TODAS as   atualizar mensagens não solicitadas para usuários não administradores?

Não. Nag mensagens no WordPress são apenas um retorno de chamada para adicionar ao admin_notices gancho que imprimir alguns HTML para a página. Eles são praticamente o mesmo que mensagens de erro ou sucesso, ou qualquer outro 'aviso' do WordPress ou qualquer outro plug-in ou tema para esse assunto.

Escondendo os nags via CSS é hacky. Também é responsável por alguns falsos positivos, pois alguns plug-ins / temas usarão, incorretamente, a classe .update-nag para fornecer o estilo desejado para seus próprios avisos.

Uma maneira muito menos hacky é remover explicitamente cada retorno de chamada que você não deseja que seja impresso (para quem não é administrador). Mas isso tem um custo (provavelmente muito baixo) de manter essa lista e garantir que não haja avisos de que "deslize a rede".

    
por Stephen Harris 29.06.2016 / 16:35
0

aqui está o código completo, que parece funcionar neste momento:

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 );
    }
});
    
por T.Todua 01.03.2018 / 12:39