J'essaie de supprimer ou de masquer les remarques de mise à jour pour les utilisateurs non-administrateurs. En tant qu'administrateur, je vois:
La réponse populaire que j'ai vue pour gérer cela dit d'utiliser:
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 );
Cela fonctionne bien pour supprimer le premier message (WordPress 4.5.3 est disponible! Veuillez mettre à jour maintenant), mais laisse le deuxième visible aux non-administrateurs:
Les deux messages sont encapsulés dans un <div class="update-nag">
, de sorte que une option consiste à modifier le bloc de code ci-dessus pour utiliser CSS afin de masquer le problème avec:
echo '<style>.update-nag {display: none}</style>';
Mais cela me semble compliqué. Existe-t-il un moyen de s’associer à une action ou à un filtre et de supprimer TOUS les messages de mise à jour de mise à jour destinés aux utilisateurs non-administrateurs? Aucune recommandation de plug-in tiers s'il vous plaît.
Dans le fichier 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.');
Nous pouvons voir que les messages sont différents en fonction du rôle d'utilisateur actuel et qu'il s'agit de maintenance_nag
.
En gros, nous avons deux alarmes de mise à jour et on peut les trouver dans admin-filters.php
add_action( 'admin_notices', 'update_nag', 3 );
add_action( 'admin_notices', 'maintenance_nag', 10 );
Donc, pour supprimer le deuxième message que nous pouvons utiliser (vérifiez également le rôle de l'utilisateur actuel si vous le souhaitez uniquement pour les non administrateurs
remove_action( 'admin_notices', 'maintenance_nag', 10 );
Pour une utilisation multi-site
remove_action( 'network_admin_notices', 'maintenance_nag', 10 );
voici le code complet, qui semble fonctionner en ce moment:
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 );
}
});
@bravokeyl est probablement la meilleure solution à votre problème immédiat.
Mais pour aborder les points suivants:
Existe-t-il un moyen de s’associer à une action ou à un filtre et de supprimer TOUS les messages de mise à jour de mise à jour destinés aux utilisateurs non-administrateurs?
Les messages Nag dans WordPress ne sont que des rappels à ajouter au crochet admin_notices
qui imprime du code HTML sur la page. Ils sont pratiquement identiques aux messages d'erreur ou de succès, ou à tout autre "avis" de WordPress ou de tout autre plug-in ou thème.
Cacher les remarques via CSS est hacky. Il est également sujet à des faux positifs car certains plugins/thèmes utiliseront, à tort, la classe .update-nag
pour fournir le style souhaité à leurs propres notifications.
Une méthode beaucoup moins astucieuse consiste à supprimer explicitement chaque rappel pour lequel vous ne souhaitez pas imprimer les avis (pour les non-administrateurs). Mais cela revient à un coût (probablement très faible) de maintenir cette liste et de s’assurer qu’il n’y a pas de préavis qui "glisse sur le net".