Entfernen Sie Update-Nags für Nicht-Administratoren

Ich versuche, die Update-Nags für Benutzer ohne Administratorrechte zu entfernen oder auszublenden. Als Admin sehe ich:

Bildbeschreibung hier eingeben

Die beliebte Antwort, die ich gesehen habe, um damit umzugehen, lautet:

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

Dies funktioniert gut, um die erste Nachricht zu entfernen (WordPress 4.5.3 ist verfügbar! Bitte aktualisieren Sie jetzt), aber die zweite bleibt für Nicht-Administratoren sichtbar:

Bildbeschreibung hier eingeben

Beide Nachrichten sind in ein

besteht eine Möglichkeit darin, das obige Codebeispiel so zu modifizieren, dass CSS verwendet wird, um den Nag zu verstecken:

 echo '.update-nag {display: none}'; 

Aber das fühlt sich mir unangenehm an. Gibt es eine Möglichkeit, sich in eine Aktion einzuklinken oder ALLE Aktualisierungsnachrichten für Nicht-Admin-Benutzer zu filtern und zu entfernen? Bitte keine Plugin-Empfehlungen von Drittanbietern.

Solutions Collecting From Web of "Entfernen Sie Update-Nags für Nicht-Administratoren"

In der Datei wp-admin/includes/update.php

 if ( current_user_can('update_core') ) $msg = sprintf( __('An automated WordPress update has failed to complete - please attempt the update again now.'), 'update-core.php' ); else $msg = __('An automated WordPress update has failed to complete! Please notify the site administrator.'); 

Wir können sehen, dass Nachrichten basierend auf der aktuellen Benutzerrolle unterschiedlich sind, und dies ist maintenance_nag .

Grundsätzlich haben wir zwei update nags und sind in admin-filters.php

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

So können wir die zweite Nachricht entfernen, die wir verwenden können (überprüfen Sie auch die aktuelle Benutzerrolle, wenn Sie dies nur für Nicht-Administratoren wünschen)

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

Für den Einsatz an mehreren Standorten

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

@bravokeyl ist wahrscheinlich die beste Antwort auf Ihr unmittelbares Problem.

Aber um Folgendes anzusprechen:

Gibt es eine Möglichkeit, sich in eine Aktion einzuklinken oder ALLE Aktualisierungsnachrichten für Nicht-Admin-Benutzer zu filtern und zu entfernen?

Nein. Nag Nachrichten in WordPress sind nur ein Callback zu den admin_notices Hook hinzugefügt, die einige HTML auf die Seite drucken. Sie sind praktisch identisch mit Fehler- oder Erfolgsmeldungen oder einer anderen “Notiz” von WordPress oder einem anderen Plug-in oder Thema.

Das Verstecken der Nags via CSS ist Hacky. Es ist auch anfällig für einige falsche Positive, da einige Plugins / Themes die .update-nag class fälschlicherweise verwenden, um ihren eigenen .update-nag den gewünschten .update-nag zu geben.

Ein viel weniger hacky Weg ist, jeden callback explizit zu entfernen, den Sie nicht drucken möchten (für Nicht-Administratoren). Aber dies kommt zu einem (wahrscheinlich sehr niedrigen Preis) der Aufrechterhaltung dieser Liste und der Gewährleistung, dass es keine Hinweise gibt, die “ins Netz gehen”.