Beharrte WordPress Admin-Hinweise Teil 3

Willkommen zurück zu unserer Serie über beharrliche WordPress-Admin-Hinweise. Wir sind jetzt in einer guten Position, um die Funktionalität und Kontrolle unserer Administrationsbenachrichtigungen erweitern zu können wann Sie erscheinen auf der Seite.

Danach fahren wir mit den beharrlichen Administratorbenachrichtigungen fort und sehen, wie Sie sicherstellen können, dass sie so abgewiesen werden, dass sie beim erneuten Laden von Administratorseiten nicht erneut angezeigt werden. 

Dies ist besonders wichtig, da benutzerdefinierte Administratorbenachrichtigungen, die in Plugins und Themes implementiert sind, nur dann wirklich nützlich sind, wenn Sie sie dauerhaft verwerfen können. Es reicht nicht aus, einfach das ist abzulehnen CSS-Klasse.

Kontrollieren, wann Admin-Benachrichtigungen angezeigt werden

Bisher wurden alle Administratorbenachrichtigungen angezeigt, sobald die Seite geladen wird. Es kann vorkommen, dass dies unpraktisch ist und Sie möchten, dass der Administratorhinweis angezeigt wird nach dem Stattdessen wurde ein bestimmtes Ereignis ausgelöst.

Wie wäre es, wenn wir wollten, dass eine benutzerdefinierte Administratorbenachrichtigung auf der zuvor erstellten Plugin-Optionsseite angezeigt wird nur nach dem Änderungen speichern Button wurde angeklickt?

Wir wissen bereits aus Teil zwei, wie man einen Admin-Hinweis auf die Plugin-Optionsseite beschränkt. Lassen Sie uns herausfinden, wie wir es auslösen können, nachdem Plugin-Optionen gespeichert wurden.

Beginnen Sie, indem Sie das auskommentieren add_action Funktionsaufruf für plugin_admin_notice. Dann fügen Sie eine vierte hinzu add_action anrufen drin wie folgt:

add_action ('admin_notices', array ($ this, 'conditional_plugin_admin_notice'));

Wann immer Plugin-Optionen gespeichert werden, a Einstellungen aktualisiert Wert von wahr wird zum Super-Global hinzugefügt $ _GET Array-Variable. Wir können dies verwenden, um festzustellen, ob wir unsere Administratorbenachrichtigung anzeigen müssen.

Neues hinzufügen conditional_plugin_admin_notice Methode zu Gwyer_Admin_Notices das gibt den Wert von aus $ _GET auf dem Bildschirm.

/ ** * Gib einen Admin-Hinweis auf der Plugin-Optionsseite aus, wenn die Einstellungen gespeichert wurden. * / public function conditional_plugin_admin_notice () echo "
"; print_r ($ _ GET); Echo"
";

Wenn die Plugin-Optionsseite normal geladen wird, wird kein Wert für die Aktualisierung der Einstellungen angezeigt.

Geben Sie nun einen Text in das ein Geben Sie einen Text ein Feld und klicken Sie auf Änderungen speichern. Diesmal sehen wir Einstellungen aktualisiert einstellen wahr, was wir gut nutzen können.

Ersetze das conditional_plugin_admin_notice mit:

/ ** * Gib einen Admin-Hinweis auf der Plugin-Optionsseite aus, wenn die Einstellungen gespeichert wurden. * / public function conditional_plugin_admin_notice () $ whitelist_admin_pages = array ('settings_page_admin-notices / plugin-options'); $ admin_page = get_current_screen (); $ current_user = wp_get_current_user (); if (in_array ($ admin_page-> base, $ whitelist_admin_pages) && isset ($ _GET ['settings-updated']) && $ _GET ['settings-updated']):?> 

Plugin-Optionen wurden gerade gespeichert. Anzeigename; ?>, du bist einfach so großartig!

Inzwischen sollte Ihnen dieser Code bekannt vorkommen. Es wurden jedoch einige neue Funktionen hinzugefügt. Erstens wurde der Bedingungsausdruck erweitert, um das Vorhandensein von zu testen Einstellungen-Update. Der Admin-Hinweis wird jetzt nur angezeigt, wenn wir uns auf der Plugin-Optionsseite befinden und ob Einstellungen aktualisiert ist eingestellt auf wahr.

Außerdem wird der aktuelle Anzeigename des Benutzers ausgegeben, um die Administratorbenachrichtigung etwas persönlicher zu gestalten.

Das wp_get_current_user () Die Funktion gibt Informationen über den aktuell angemeldeten Benutzer zurück. Dieses Objekt wird in gespeichert $ current_user und enthält Details wie E-Mail-Adresse, ID, Vorname, Nachname und Anzeigename des Benutzers. Dies ist die Eigenschaft, an der wir interessiert sind.

Für ein wenig Extrapolitik haben wir schließlich die Anzeige des Standard-Admin-Hinweises verhindert, so dass nur der benutzerdefinierte Hinweis für den Benutzer sichtbar ist. Um dies zu erreichen, haben wir nur eine einzige Codezeile hinzugefügt conditional_plugin_admin_notice () CSS ausgeben, um den unerwünschten Administratorhinweis auszublenden.

Echo "";

Das Endergebnis beim Speichern der Plugin-Optionen wird unten gezeigt.

Dies funktioniert zwar zu Demonstrationszwecken gut, aber es ist ein besserer (und saubererer) Ansatz, stattdessen Stile zu einem separaten Stylesheet hinzuzufügen und es nur auf der Plugin-Optionsseite anzuzeigen.

Unser Custom Admin-Hinweis könnte auf verschiedene Weise noch erweitert werden. Eine Möglichkeit könnte sein, bei jedem Speichern der Plugin-Optionen ein Protokoll zu führen, in dem das aktuelle Datum und die aktuelle Uhrzeit sowie Benutzerinformationen gespeichert sind.

Oder wie wäre es mit der Admin-Benachrichtigung, um anzuzeigen, wie oft die Plugin-Optionen an diesem Tag, Woche, Monat usw. gespeichert wurden? Ich bin mir sicher, dass Ihnen noch weitere Beispiele einfallen!

Absetzung beharrlicher Admin-Hinweise effektiv

Es ist an der Zeit, uns die Hände schmutzig zu machen und tiefer in den Code einzutauchen, während wir uns darauf konzentrieren, hartnäckige Verwaltungsmitteilungen abzulehnen. Bis jetzt haben wir die einzige Möglichkeit gesehen, wie Sie dies tun können, indem Sie das hinzufügen .ist abzulehnen CSS-Klasse zu unserem Admin-Hinweis div-Container. Dadurch wird der Administratorhinweis für die aktuelle Seite verworfen, er wird jedoch in der Praxis wenig genutzt, da er beim erneuten Laden einer Administratorseite wieder angezeigt wird.

Wie können wir das beheben? Wir werden uns verschiedene Methoden ansehen, um persistente Verwaltungsbenachrichtigungen abzulehnen, einschließlich:

  • Einmalige Administratorbenachrichtigung, die nach einer Ansicht verschwindet.
  • Ein Admin-Hinweiszähler, der nach einer bestimmten Anzahl von Ansichten verschwindet.
  • Wichtiger Admin-Hinweis, der bei der Aktualisierung der Seite verworfen wird.
  • Benutzerdefinierte Ablehnung (Admin-Benachrichtigung wurde nach Abschluss einer bestimmten Aktion entfernt).

Bevor wir mit der Implementierung dieser Beispiele beginnen, sollten Sie alle sicherstellen add_action () ruft herein Gwyer_Admin_Notices :: init () wurden auskommentiert. Dann füge ein neues hinzu abzulehnen-admin-notices.php Datei an die Admin_Notizen Plugin-Ordner. Öffnen Sie diese neue Datei und fügen Sie eine neue Klassendefinition hinzu:

drin();

Im admin_notices.php, neue hinzufügen einmalig benötigt() rufen Sie an, um unsere neue Klasse zu importieren:

required_once (dirname (__ FILE__). '/dismissible-admin-notices.php');

Das Gwyer_Dismissible_Admin_Notices Die Klasse enthält den gesamten Code, der sich auf die Ablehnung beharrlicher Verwaltungsbenachrichtigungen bezieht.

Einmalige Administratorbenachrichtigung

Die erste Methode, die wir uns ansehen, ist, wie ein Admin-Hinweis nur einmal angezeigt wird, damit er beim Laden der Seite nicht erneut angezeigt wird. Sie können diese Methode verwenden, um einen Benutzer zu benachrichtigen, wenn ein Plugin oder Design gerade aktiviert wurde.

Lassen Sie uns dies für unser Admin Notices-Plugin tun. Wir beginnen mit der Registrierung einer WordPress-Übergangsoption nach der Plugin-Aktivierung, die fast sofort abläuft.

In dem Gwyer_Dismissible_Admin_Notices Klasse, fügen Sie einen Anruf hinzu register_activation_hook ():

register_activation_hook (plugin_dir_path (__FILE__). 'admin-notices.php', array ($ this, 'set_admin_notice_transient'));

Das register_activation_hook () Für diese Funktion müssen Sie den Pfad zur Haupt-Plugin-Datei angeben abzulehnen-admin-notices.php. Wir können also nicht einfach die PHP-Konstante verwenden __DATEI__ Wir haben zuvor verwendet, da dies immer auf die aktuelle PHP-Datei verweist.

Stattdessen müssen wir den Pfad zur Haupt-Plugin-Datei selbst erstellen plugin_dir_path (__FILE__). 'admin-notices.php'.

Wenn das Plugin für Administratorbenachrichtigungen aktiviert ist, wird Code ausgeführt, der zu a hinzugefügt wird set_admin_notice_transient Klassenmethode, die wir als Nächstes definieren werden.

öffentliche Funktion set_admin_notice_transient () set_transient ('admin-notice-transient', true, 5); 

Diese Methode erstellt einen neuen Transienten, der aufgerufen wird 'admin-notice-transient' mit einem Wert von wahr, und endet nach fünf Sekunden.

Lassen Sie uns diesen Übergang nutzen, indem Sie eine Administratorbenachrichtigung unter bestimmten Bedingungen anzeigen, wenn wir uns auf der richtigen Admin-Seite befinden und der Übergang noch vorhanden ist.

Neues hinzufügen add_action () Aufruf drin().

add_action ('admin_notices', array (& $ this, 'display_admin_notice'));

Dann füge das hinzu display_admin_notice Callback-Funktion als neue Klassenmethode:

 öffentliche Funktion display_admin_notice () $ current_user = wp_get_current_user (); $ whitelist_admin_pages = array ('plugins'); $ admin_page = get_current_screen (); if (in_array ($ admin_page-> base, $ whitelist_admin_pages) && get_transient ('admin-notice-transient')):?> 

Das Admin-Hinweise Plugin wurde gerade aktiviert. Danke für deine Unterstützung Anzeigename; ?>!

Ähnlich wie in den vorherigen Beispielen wird der Administratorhinweis nur angezeigt, wenn wir uns auf einer bestimmten Seite befinden - in diesem Fall auf der Seite der Hauptadmin-Plugins. Aber wir haben eine zusätzliche Bedingung, dass die 'admin-notice-transient' muss auch vorhanden sein, andernfalls wird der Admin-Hinweis nicht angezeigt.

Nachdem der Admin-Hinweis ausgegeben wurde, wird der Transient sofort gelöscht, obwohl wir ihn zunächst auf fünf Sekunden eingestellt haben. Dies stellt nur sicher, dass es nicht noch einmal angezeigt wird. Dies kann möglicherweise passieren, wenn ein Benutzer versucht hat, die Plug-In-Seite sehr schnell zu aktualisieren. Indem wir das Transiente absichtlich löschen, können wir sicher sein, dass dies niemals der Fall sein wird.

Um den gerade hinzugefügten Code zu testen, gehen Sie zur Hauptseite der Plugins und deaktivieren Sie das Plugin Admin Notices, und aktivieren Sie es anschließend erneut.

Der Schlüssel hier ist der 'admin-notice-transient' Übergangseinstellung. Andernfalls würde der Admin-Hinweis jedes Mal erscheinen, wenn die Plugins-Seite geladen wird (nachdem das Plugin aktiviert wurde). Dies ist nicht das, was wir wollen.

Administratorbenachrichtigungszähler

Als nächstes erscheint ein Admin-Hinweis, der nur eine festgelegte Anzahl von Malen anzeigt und danach nicht mehr sichtbar ist. Dieses Mal ist es auch nicht auf eine bestimmte Admin-Seite beschränkt.

Bevor wir anfangen, in der Gwyer_Dismissible_Admin_Notices Klasse, kommentieren Sie das aus register_activation_hook () und add_action () Funktionsaufrufe. Lassen Sie uns nun eine grundlegende Administratorbenachrichtigung einrichten, die wir in Kürze erweitern werden.

Neues hinzufügen add_action () anrufen drin():

add_action ('admin_notices', array (& $ this, 'display_admin_notice_counter'));

Und dann die Callback-Funktion ausarbeiten display_admin_notice_counter ():

öffentliche Funktion display_admin_notice_counter () ?> 

Widerruf der Admin-Benachrichtigung.

Daraufhin wird ein Standard-Admin-Hinweis angezeigt, der auf jeder WordPress-Admin-Seite angezeigt wird.

Denken wir darüber nach, was wir tun müssen. Unser Admin-Hinweis sollte eine bestimmte Anzahl von Malen anzeigen, und jedes Mal, wenn er erscheint, wird ein interner Zähler um eins erhöht. Sobald das Zählerlimit erreicht ist, sollte die Administratorbenachrichtigung nicht mehr angezeigt werden.

Wir möchten, dass der Admin-Hinweis auf jeder Admin-Seite angezeigt wird. Der Zählerwert muss also zwischen den Seitenladungen bestehen bleiben. Eine gute Möglichkeit, dies zu tun, ist die Verwendung einer Datenbankoption zum Speichern des Zählerwerts.

Fügen Sie eine Zählerklasseneigenschaft hinzu, um den Zählergrenzwert zu speichern:

public $ counter_limit = 5;

Dies wird in Kürze verwendet, um zu verwalten, wie oft die Administratorbenachrichtigung angezeigt wird. Innerhalb display_admin_notice_counter (), Aktualisieren Sie den Code wie folgt:

 öffentliche Funktion display_admin_notice_counter () $ counter = get_option ('admin_notice_counter', 1); ?> 

Dieser Admin-Hinweis wurde angezeigt mal).

Vor der Anzeige der Administratorbenachrichtigung rufen wir die Zähleroption ab. Wenn noch nicht vorhanden, wird ein Standardwert zurückgegeben. Nach dem Rendern der Administratorbenachrichtigung wird die Zähleroption um eins erhöht und aktualisiert. Wenn es nicht existiert, wird eine neue Option erstellt, um den aktuellen Wert zu speichern.

Wir haben auch die CSS-Klasse aktualisiert, um eine Benachrichtigung des Administrators zu sein.

Besuchen Sie verschiedene Admin-Seiten und sehen Sie, wie der Zähler jedes Mal steigt.

Das ++$ counter Code ist ein Beispiel für einen Pre-Increment-Operator. Es fügt einen Wert hinzu $ counter Vor es wird in der Datenbank gespeichert. Wenn wir einen Nachinkrementoperator (d. H. $ counter++) dann der Wert von $ counter würde zuerst gespeichert werden und dann erhöht, was nicht funktionieren würde.

Lass uns einbauen $ counter_limit jetzt, um zu verhindern, dass der Admin-Hinweis zu oft erscheint. Fügen Sie dies zu display_admin_notice_counter () unter der Erklärung für $ counter:

if ($ counter> $ this-> counter_limit) return; 

Sobald der Administratorhinweis fünfmal angezeigt wurde, ist er auf nachfolgenden Admin-Seiten nicht mehr sichtbar. Es kann jedoch sinnvoll sein, eine Nachricht beim letzten Erscheinen der Administratorbenachrichtigung anzuzeigen, damit der Benutzer weiß, dass sie nicht mehr angezeigt wird. Erweitern Sie den Bedingungsausdruck und geben Sie eine zusätzliche Nachricht aus:

 öffentliche Funktion display_admin_notice_counter () $ counter = get_option ('admin_notice_counter', 1); if ($ counter> $ this-> counter_limit) return;  else if ($ counter == $ this-> counter_limit) $ extra_message = "Jetzt ist es Zeit sich zu verabschieden."; ?> 

Dieser Admin-Hinweis wurde angezeigt mal).

Sie sehen die Nachricht jedoch nicht, wenn Sie das Zählerlimit bereits überschritten haben. Sie können dieses Problem vorübergehend lösen, indem Sie die $ counter_limit Variable.

Zu Testzwecken wäre es besser, das Zählerlimit zurücksetzen zu können. Wenn Sie wissen, wie Sie die Datenbank bearbeiten, können Sie die Option direkt ändern. Dies kann jedoch mehrmals langwierig sein. Lassen Sie uns also unsere eigene Reset-Funktion implementieren.

Zuerst ändern $ counter_limit zurück zu 5 und fügen Sie eine neue Klasseneigenschaft hinzu:

public $ counter_reset = false;

Dann drinnen drin() ersetzen

add_action ('admin_notices', array (& $ this, 'display_admin_notice_counter'));

mit

$ this-> reset_counter_check ();

Die Reset-Funktion sollte entweder unsere Counter-Admin-Benachrichtigung anzeigen oder das löschen admin_notice_counter Datenbankoption und zeigen stattdessen einen Warnhinweis an.

 öffentliche Funktion reset_counter_check () if (! $ this-> counter_reset) add_action ('admin_notices', array (& $ this, 'display_admin_notice_counter'));  else delete_option ('admin_notice_counter'); ?> 

Admin-Benachrichtigungszähler wurde zurückgesetzt! Veränderung $ counter_reset zu falsch um den Admin-Hinweiszähler erneut zu starten.

Um die neue Rücksetzfunktion zu verwenden, ändern Sie einfach $ counter_reset zu wahr und laden Sie eine beliebige Admin-Seite.

Dann ändern Sie es wieder in falsch nochmal.

Hinweis: Diese Methode kann problemlos verwendet werden, um eine Administratorbenachrichtigung anzuzeigen, wie im vorherigen Beispiel. Die Einrichtung ist jedoch etwas komplizierter. Das hängt wirklich von Ihren Anforderungen ab.

Wenn Sie nur eine einmalige Verwaltungsbenachrichtigung benötigen, ist die vorherige Methode wahrscheinlich besser für Sie geeignet und lässt sich schneller implementieren. Die Counter-Methode ist jedoch flexibler und nach der Einrichtung genauso einfach in Ihren eigenen Projekten anzuwenden.

Fazit

In Teil drei dieser Tutorialserie haben wir eine Menge Grundlegendes besprochen. Wir haben gesehen, wie Sie steuern können, wann Admin-Benachrichtigungen angezeigt werden, und nicht immer, sobald eine Admin-Seite vollständig geladen ist. Dies ist in vielerlei Hinsicht nützlich, aber unser Beispiel zeigte, wie eine benutzerdefinierte Administratorbenachrichtigung angezeigt wird, nachdem Plugin-Optionen gespeichert wurden.

Anschließend haben wir zwei eindeutige Beispiele für die Ablehnung beharrlicher Verwaltungsbenachrichtigungen angeführt. Dies gibt Ihnen viel Flexibilität bei der Anzeige von Administratorbenachrichtigungen an den Benutzer. Im nächsten und letzten Teil dieser Lernprogrammreihe werden weitere Möglichkeiten zur Ablehnung beharrlicher Verwaltungsbenachrichtigungen untersucht.

Für ein bisschen Spaß erstellen wir eigene benutzerdefinierte Benachrichtigungsarten und fügen Symboldekorationen hinzu.