Im ersten Teil dieser Serie haben wir gelernt, wie Sie eine grundlegende Verwaltungsbenachrichtigung implementieren, die oben auf jeder WordPress-Verwaltungsseite angezeigt wird. In diesem Lernprogramm bauen wir ein Plugin auf, das den gesamten benutzerdefinierten Administratorbenachrichtigungscode enthält.
Wir beginnen mit der Einführung von Standardverwaltungsbenachrichtigungen und verwenden diese als Grundlage für flexiblere und fortgeschrittenere Beispiele.
Lassen Sie uns zunächst jedoch ein neues Plugin einrichten, das wir für alle unsere Verwaltungsbenachrichtigungen verwenden werden. Wir können also mit der Code-Eingabe beginnen.
Ich gehe davon aus, dass Sie bereits eine lokale WP-Entwicklungsseite eingerichtet haben. Wenn nicht, dann verweisen Sie auf die Links in Teil 1 dieser Tutorialserie.
Erstellen Sie einen neuen Plugin-Ordner mit dem Namen Admin_Notizen
Innerhalb / wp-content / plugins /
, und erstelle dann ein admin_notices.php
Datei, die die Hauptplugin-Datei sein wird.
Aufmachen admin_notices.php
Fügen Sie in Ihrem bevorzugten Editor die grundlegende Plugin-Struktur hinzu:
drin();
Wir haben einen einfachen Plugin-Header hinzugefügt, damit WordPress unser Plugin erkennt. Daran schließt sich eine Klasse an, die Methoden zur Anzeige unserer Administratorhinweise enthält.
Ich habe die Klasse benannt Gwyer_Admin_Notices
um es so einzigartig wie möglich zu machen. Auf diese Weise ist ein Konflikt mit einem vorhandenen Klassennamen weniger wahrscheinlich.
Beginnen wir mit der Anzeige einer grundlegenden Administratorbenachrichtigung und fügen Sie sie hinzu, um sie nützlicher zu machen. Fügen Sie zum Erstellen einer Administratorbenachrichtigung das hinzu Admin_Notizen
Haken an der drin()
Funktion:
add_action ('admin_notices', array ($ this, 'test_notice'));
Der Haken enthält a test_notice
Callback-Funktion, die zur Ausgabe des Admin-Hinweis-Markups verwendet wird.
Fügen Sie die folgende Klassenmethode zu hinzu Gwyer_Admin_Notices
, um die tatsächliche Administratorbenachrichtigung anzuzeigen. Für die Nachrichten verwenden wir klassische Filmzitate aus den letzten 100 Jahren der Filme.
/ ** * Gib einen Test-Admin-Hinweis aus. * / public function test_notice () ?>Yoo hoo, großer Sommerausbruch.
Aktivieren Sie das Plugin, um die Testbenachrichtigung anzuzeigen.
Fügen wir auch Beispiele für die anderen Arten von Administratorbenachrichtigungen hinzu, die wir anzeigen können, einschließlich des unzulässigen Typs, indem Sie das hinzufügen
ist abzulehnen
CSS-Klasse Fügen Sie diese dem hinzutest_notice ()
Methode unter der vorhandenen Administratorbenachrichtigungdiv
:Toto, ich habe das Gefühl, wir sind nicht mehr in Kansas.
Du hattest mich bei Hallo".
Von allen Gin-Gelenken in allen Städten der Welt geht sie in meine.
Niemand bringt Baby in eine Ecke.
Dies ist die vollständige Palette von Admin-Benachrichtigungstypen, die über die WordPress-Core-CSS-Klassen angezeigt werden können. Denken Sie jedoch daran, dass der abgelehnte Admin-Hinweis auf jeder Seite erneut angezeigt wird!
"Ablehnen" - Admin-Hinweis in diesem Zusammenhang bedeutet nur für die aktuelle Seite. Persistente Administratorbenachrichtigungen sind nicht sehr flexibel. Wir werden uns später genauer mit verschiedenen Möglichkeiten befassen, wie Sie Ihre Administratorbenachrichtigungen effektiv verwerfen können.
Admin-Hinweishaken
Bisher haben wir nur die verwendet
admin_notice
Hook, um einen Admin-Hinweis zu implementieren. Es gibt tatsächlich vier separate Admin-Benachrichtigungs-Hooks, die Sie zur Anzeige von Benachrichtigungen verwenden könnenadmin_notice
ist die am häufigsten verwendete.Die vier verfügbaren Haken sind:
*Für diese Haken ist derzeit keine offizielle Dokumentation verfügbar.
Wo würdest du normalerweise gebrauchen? all_admin_notices
, user_admin_notices
, und network_admin_notices
? Und wie unterscheiden sie sich davon? Admin_Notizen
?
Ich sagte vorher das das Admin_Notizen
Hook zeigt Benachrichtigungen auf allen Admin-Seiten an, dies ist jedoch nicht unbedingt richtig. Wenn Sie einen Blick darauf werfen admin-header.php
In WordPress-Core sehen Sie das Admin_Notizen
, network_admin_notices
, und user_admin_notices
sind sich gegenseitig aus. Das ist nur ein dieser Hooks werden auf einer WordPress-Admin-Seite ausgelöst.
Eine Reihe von bedingten Ausdrücken wertet die aktuelle Verwaltungsseite aus und löst je nach Art der Verwaltungsseite, auf der Sie sich gerade befinden, nur eine davon aus.
zuerst, is_network_admin ()
prüft, ob Sie sich in einem Netzwerk-Administratorbildschirm befinden (z. B. eine beliebige Admin-Seite, die auf a basiert.) / wp-admin / network /
URL). Wenn ja, das network_admin_notices
Haken Feuer.
Andernfalls, is_user_admin ()
prüft, ob Sie sich auf einem Benutzer-Admin-Bildschirm befinden (z. B. eine Admin-Seite, die auf a basiert.) / wp-admin / user /
URL). Wenn ja, das user_admin_notices
Haken Feuer.
Und wie Sie vielleicht schon gedacht haben, wenn beide is_network_admin ()
und is_user_admin ()
kehren Sie dann falsch zurück Admin_Notizen
Haken Feuer.
Das lässt nur die all_admin_notices
Haken. Dieser Hook ist nicht Teil des oben besprochenen Bedingungsausdrucks. Daher wird garantiert, dass dieser Hook angezeigt wird alles Admin-Seiten, egal was, einschließlich Netzwerk-Administrationsseiten mit mehreren Standorten.
Um zu klären, für jede WordPress-Admin-Seite nur die all_admin_notices
Haken ist garantiert immer zu feuern. Nur von den anderen drei Haken ein wird ausgelöst, je nachdem, auf welcher Admin-Seite Sie sich gerade befinden.
Ich möchte Sie dazu ermutigen, einen Blick darauf zu werfen admin-header.php
(am Ende der Datei), um zu sehen, wie WordPress bewertet, wann jeder Admin-Hook verwendet wird.
Wir werden nur verwenden Admin_Notizen
In dieser Tutorial-Reihe werden Sie jedoch möglicherweise einige der anderen Haken in Ihrem eigenen Projekt benötigen. Es lohnt sich also, sie zu überprüfen.
Wenden wir uns nun der Anzeige von Administratorbenachrichtigungen auf bestimmten Seiten zu. Kommentieren Sie zuerst den Anruf aus add_action
Daher werden unsere Testbenachrichtigungen nicht mehr angezeigt.
Innerhalb drin()
, füge ein neues hinzu add_action ()
Aufruf, den wir verwenden, um einen Admin-Hinweis auf einer bestimmten Admin-Seite anzuzeigen.
add_action ('admin_notices', array ($ this, 'specific_admin_page'));
Dann definieren Sie die spezifische_Admin_Seite ()
Methode wie folgt:
/ ** * Einen Admin-Hinweis auf einem bestimmten Admin-Bildschirm ausgeben. * / public function specific_admin_page () $ admin_page = get_current_screen (); ?>Information: Wir befinden uns derzeit im Base; ?> Administrator Seite.
Speichern Sie Ihre Änderungen und zeigen Sie eine beliebige Seite im WordPress-Administrator an. Ich werde die Haupt-Dashboard-Seite ausprobieren.
Wie Sie sehen, wird für jede von Ihnen besuchte Verwaltungsseite der (Basis-) Name der Seite in der Verwaltungsbenachrichtigung angezeigt.
Das
get_current_screen ()
Funktion gibt a zurückWP_Screen
Objekt mit Details zum aktuellen Admin-Bildschirm. Die besondere Objekteigenschaft, an der wir interessiert sind, istWP_Screen-> Basis
, die auf den Basistyp des aktuellen Bildschirms ausgewertet wird. Laden Sie verschiedene WordPress-Administrationsseiten, um zu sehen, für welche Werte zurückgegeben werdenWP_Screen-> Basis
.Wir können den Basiswert verwenden, um unseren Admin-Hinweis nur auf der Dashboard-Seite bedingt zu laden. Der Wert, den wir überprüfen müssen, ist
Instrumententafel
. Lassen Sie uns auch einen alternativen Administratorhinweis anzeigen, wenn wir nicht auf der Admin-Dashboard-Seite sind. Ersetzen Sie Ihre Definition vonspezifische_Admin_Seite ()
mit:/ ** * Einen Admin-Hinweis auf einem bestimmten Admin-Bildschirm ausgeben. * / public function specific_admin_page () $ admin_page = get_current_screen (); if ($ admin_page-> base == "Dashboard"):?>Wir haben es geschafft! Willkommen im Dashboard.
Wo bist du gegangen? Dies ist nicht das Dashboard!
Wenn Sie sich auf der Dashboard-Seite befinden, ist alles in Ordnung, aber navigieren Sie zu einer anderen Administrationsseite und sehen Sie, was passiert.
Die Verwendung dieses einfachen Ansatzes gibt uns einiges an Flexibilität bei der Anzeige von Verwaltungsbenachrichtigungen auf bestimmten Verwaltungsseiten. Wir können dies problemlos auf eine beliebige Liste von Verwaltungsseiten erweitern, auf denen wir Verwaltungsnotizen anzeigen möchten.
Ersetzen Sie erneut die
spezifische_Admin_Seiten ()
Funktion, diesmal mit folgendem Code:/ ** * Einen Admin-Hinweis auf einem bestimmten Admin-Bildschirm ausgeben. * / public function specific_admin_page () $ whitelist_admin_pages = array ('dashboard', 'upload', 'edit-comments'); $ admin_page = get_current_screen (); if (in_array ($ admin_page-> base, $ whitelist_admin_pages)):?>Wir haben es geschafft! Dies ist das 'Base; ?> 'Admin-Seite.
Nicht auf deiner Nelly! Diese Seite ist nicht auf meiner Liste.
Anstatt nach einer einzelnen Admin-Seite zu suchen, prüfen wir nun, ob der Basisname der aktuellen Admin-Seite in der vorhanden ist
$ whitelist_admin_pages
Array. Wenn wir zu den Administrationsseiten für Dashboards, Medienbibliotheken oder Kommentare navigieren, wird die Benachrichtigung über den Erfolg angezeigt.Und wenn wir besuchen irgendein Auf einer anderen Admin-Seite (nicht in unserem Whitelist-Array enthalten) wird ein alternativer Admin-Hinweis angezeigt.
Wie wäre es mit einem Admin-Hinweis auf einer Plugin-Optionsseite? Wie würden wir das angehen? Bevor wir uns darauf einlassen, müssen wir zunächst eine Dummy-Optionsseite für unser Plugin einrichten.
Erstellen Sie eine neue Datei mit dem Namen
plugin-options.php
in derAdmin-Hinweise
Plugin-Ordner, den wir zuvor hinzugefügt haben, und folgenden Code hinzufügen:drin();Admin-Hinweis-Plugin
Oben
admin-notices.php
(direkt über der Klassendeklaration) fügen Sie die Plugin-Optionsklasse in die Hauptplugin-Datei ein mit:required_once (dirname (__ FILE__). '/plugin-options.php');Ich werde nicht zu sehr ins Detail gehen, wie der Code läuft
plugin-options.php
funktioniert, als könnte das ein ganzes Tutorial sein! Wenn Sie eine Auffrischung wünschen, empfehle ich einen Blick auf die WordPress-Codex-Seite zum Hinzufügen von Plugin-Optionsseiten.Im Grunde fügen wir nur ein neues hinzu Admin-Hinweise Unterseite der die Einstellungen Speisekarte. Die Plugin-Optionsseite selbst enthält ein einzelnes Textfeld, in das Sie eine Zeichenfolge eingeben können. Wenn der Änderungen speichern Wenn Sie auf die Schaltfläche klicken, wird der Inhalt des Textfelds in der WordPress-Datenbank gespeichert.
Dies ist nur ein Beispiel für eine Plugin-Einstellungsseite, nur zur Demonstration. Es enthält nicht die erforderlichen Desinfektions- oder Übersetzungsfunktionen, die für ein Produktions-Plugin empfohlen werden, das für die allgemeine Veröffentlichung vorgesehen ist.
Gehe zu Einstellungen> Admin-Hinweise um die Plugin-Optionsseite anzuzeigen.
Wie erwartet, wird der zuvor hinzugefügte Administratorhinweis auf unserer Plugin-Optionsseite angezeigt. Die Fehlermeldung wird angezeigt, weil sich die Seite mit den Plugin-Optionen nicht befindet
$ whitelist_admin_pages-Array
der zulässigen Admin-Seiten. Lassen Sie uns das jetzt beheben.Um unsere Optionsseite zum Array hinzuzufügen, müssen wir den Basisnamen kennen. Innerhalb
spezifische_Admin_Seite ()
, Ändern Sie den Fehler Admin-Hinweis div in Folgendes:Nicht auf deiner Nelly! Diese 'Base; ?> Seite ist nicht auf meiner Liste.
Wir erhalten immer noch die gleiche Fehlermeldung wie zuvor, aber dieses Mal enthält es den Basisnamen, den wir benötigen, was sich herausstellt
settings_page_admin-notices / plugin-options
. Diesen Namen hätten wir nicht leicht erraten können, also hat es sich gelohnt, sich die Zeit für die Ausgabe zu nehmen!Fügen Sie den Basisnamen zum hinzu
$ whitelist_admin_pages
Array, das jetzt so aussehen sollte:$ whitelist_admin_pages = array ('settings_page_admin-notices / plugin-options', 'dashboard', 'upload', 'edit-comments');Aktualisieren Sie die Seite mit den Plugin-Optionen, um die aktualisierte Administratorbenachrichtigung anzuzeigen.
Nachdem wir nun den Basisnamen der Plugin-Optionen-Seite kennen, können wir auf einfache Weise eine Administratorbenachrichtigung erstellen, die nur auf dieser Administrationsseite angezeigt wird. Löschen
settings_page_admin-notices / plugin-options
von dem$ whitelist_admin_pages
Array und kommentieren Sie die zweite ausadd_action
Funktionsaufruf indrin()
. Fügen Sie dann eine dritte Aktion hinzu, die wir für die Admin-Benachrichtigung unserer Plugin-Optionsseite verwenden. Ihredrin()
Funktion sollte jetzt so aussehen:/ ** * Haken registrieren. * / public function init () // add_action ('admin_notices', array ($ this, 'test_notice')); // add_action ('admin_notices', array ($ this, 'specific_admin_page')); add_action ('admin_notices', array ($ this, 'plugin_admin_notice'));Lass uns das herausarbeiten
plugin_admin_notice ()
Callback-Funktion jetzt. Fügen Sie diese neue Methode dem hinzuGwyer_Admin_Notices
Klasse:/ ** * Gib einen Admin-Hinweis auf der Plugin-Optionsseite aus. * / public function plugin_admin_notice () $ whitelist_admin_pages = array ('settings_page_admin-notices / plugin-options'); $ admin_page = get_current_screen (); if (in_array ($ admin_page-> base, $ whitelist_admin_pages)):?>Willkommen auf der Plugin-Seite "Admin Notices"!
Dies ist sehr ähnlich zu
spezifische_Admin_Seite ()
außer wir haben den bedingten Ausdruck entfernt. Wir haben auch einen unzulässigen Button hinzugefügt, indem Sie dieist abzulehnen
CSS-Klasse, der Admin-Hinweis kann jetzt ebenfalls geschlossen werden.Laden Sie andere Administrator-Seiten, um zu bestätigen, dass der Administrator-Hinweis nur auf der Plugin-Optionsseite angezeigt wird.
Fazit
In diesem Lernprogramm haben wir mehr über Administratorbenachrichtigungen und die verschiedenen verfügbaren Hooks für die Anzeige erfahren. Wir haben auch behandelt, wie Administratorbenachrichtigungen nur auf bestimmten Seiten des WordPress-Administrators angezeigt werden. Wir haben ein dediziertes Plugin entwickelt, das den benutzerdefinierten Admin-Benachrichtigungscode enthält.
In Teil drei erweitern wir das Plugin weiter, indem wir zeigen, wie Admin-Benachrichtigungen ausgelöst werden, wenn bestimmte Ereignisse auftreten. Denken Sie daran, dass die Open-Source-Funktion von WordPress das Erlernen und Erweitern der Inhalte erleichtert. Zu diesem Zweck haben wir auf Envato Market viel zu überprüfen und zu studieren, wenn Sie neugierig sind.
Wir werden uns dann mit der Frage befassen, wie wir das Problem mit der permanenten Administratorbenachrichtigung lösen können, damit sie nicht erneut angezeigt werden, wenn die Seite aktualisiert wird. In unserem benutzerdefinierten Plugin implementieren wir verschiedene Methoden, um dies zu ermöglichen.