Supprimer les alarmes de mise à jour pour les non-administrateurs [dupliquer]

10

J'essaie de supprimer ou de masquer les remarques de mise à jour pour les utilisateurs non-administrateurs. En tant qu'administrateur, je vois:

Laréponsepopulairequej'aivuepourgérerceladitd'utiliser:

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

Celafonctionnebienpoursupprimerlepremiermessage(WordPress4.5.3estdisponible!Veuillezmettreàjourmaintenant)maislaisselesecondvisibleauxnon-administrateurs:

Lesdeuxmessagessontentourésd'un<divclass="update-nag"> . 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 maladroit. 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.

    
posée j08691 29.06.2016 - 15:59

3 réponses

14

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 .

Nous avons essentiellement deux mises à jour de la mise à jour que l'on peut 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 sur plusieurs sites

remove_action( 'network_admin_notices', 'maintenance_nag', 10 );
    
réponse donnée bravokeyl 29.06.2016 - 16:24
1

@bravokeyl est probablement la meilleure solution à votre problème immédiat.

Mais pour répondre aux questions suivantes:

  

Existe-t-il un moyen d’accrocher une action ou un filtre et de supprimer TOUT le   mettre à jour les messages de rappel pour les utilisateurs non-administrateurs?

Non. Les messages Nag dans WordPress ne sont qu'un rappel à 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 compliquée consiste à supprimer explicitement chaque rappel pour lequel vous ne souhaitez pas imprimer les notifications (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».

    
réponse donnée Stephen Harris 29.06.2016 - 16:35
0

voici le code complet, qui semble fonctionner à 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 );
    }
});
    
réponse donnée T.Todua 01.03.2018 - 12:39

Lire d'autres questions sur les étiquettes