Beharrte WordPress Admin-Hinweise Teil 4

Bisher haben wir in dieser Serie zwei getrennte Möglichkeiten zum Abweisen von beharrlichen WordPress-Verwaltungsbenachrichtigungen beschrieben. Wir werden darauf in diesem vierten und letzten Teil der Tutorialserie aufbauen, indem wir uns zwei weitere spezifische Methoden ansehen, um Ihre Verwaltungsbenachrichtigungen dauerhaft zu verwerfen. Abgerundet wird das Ganze, indem wir zeigen, wie Sie eigene benutzerdefinierte Benachrichtigungsarten erstellen und Dekorationen wie Symbole hinzufügen.

Sticky Admin-Mitteilung

Wir wissen bereits, wie man einen Admin-Hinweis anzeigen kann, der abgewiesen werden kann. Wir müssen nur noch das hinzufügen ist abzulehnen CSS-Klasse zum enthaltenden div-Element. Dies ist jedoch nur vorübergehend und wird die Benachrichtigung für die aktuelle Seite nur verwerfen. Sobald die Seite neu geladen wird, erscheint sie erneut.

Um es dauerhaft abzulehnen, ist mehr Code erforderlich, als wir bisher gesehen haben. Die Implementierung ist jedoch nicht zu schwierig. Lassen Sie uns einen Blick auf das Wesentliche werfen, beginnend mit einer Übersicht.

Wir verwenden eine benutzerdefinierte Option, um den Anzeigestatus unserer Administratorbenachrichtigung zu speichern. Bei der Plugin-Aktivierung wird diese Option erstellt / aktualisiert und auf true gesetzt. Der Admin-Hinweis wird nur dann angezeigt, wenn die Option aktuell wahr ist.

Der Schlüssel zu dieser Methode ist die Verwendung von Ajax, damit wir die Option auf false setzen können, wenn auf die Schaltfläche "Deaktivieren" geklickt wird. Nach erfolgreicher Festlegung auf "false" schlägt der Bedingungscode, der den Status der Option prüft, fehl und die Administratorbenachrichtigung wird nicht mehr angezeigt.

Beginnen wir mit dem Hinzufügen des Admin-Hinweises selbst. Dies ist ein einfacher Hinweis. Im Gwyer_Dismissible_Admin_Notices :: init (), füge ein neues hinzu add_action Anruf:

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

Dann füge das hinzu dismiss_admin_notice () Callback-Funktion für dieselbe Klasse:

öffentliche Funktion dismiss_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)):?> 

Entlassen Sie mich, wenn Sie können. Hahaha!

Dies fügt einen Admin-Hinweis hinzu, der nur auf der Plugin-Admin-Seite angezeigt wird und dem sehr ähnlich ist, was wir in vorherigen Tutorials gesehen haben. Der einzige kleine Unterschied besteht darin, dass wir der Administratorbenachrichtigung auch eine CSS-ID hinzugefügt haben div Container. Dies wird verwendet, um gezielt auf die Administratorbenachrichtigung zu zielen, an der wir interessiert sind.

Wir müssen JavaScript-Code hinzufügen, damit der Ajax-Aufruf funktioniert. Fügen Sie also ein js Ordner im Stammverzeichnis Admin-Hinweise Plugin-Ordner und erstellen Sie eine Datei namens admin-notices.js. Fügen Sie der neuen Datei Code hinzu, um zu testen, ob sie ordnungsgemäß geladen wird, indem Sie eine Konsolennachricht ausgeben.

jQuery (document) .ready (function ($) console.log ('admin-notices.js geladen!'););

Im Gwyer_Plugin_Options :: init (), füge ein neues hinzu add_action Aufruf zur Aufnahme unserer Skriptdatei:

add_action ('admin_enqueue_scripts', array ($ this, 'enqueue_scripts'));

Wir möchten, dass diese JavaScript-Datei nur auf der Plugin-Optionsseite geladen wird. Daher benötigen wir eine Möglichkeit, sie unter bestimmten Bedingungen in die Warteschlange aufzunehmen. Wir können dies tun, indem wir prüfen, auf welcher Admin-Seite wir uns derzeit befinden, ob es sich um unsere Plugin-Optionsseite handelt.

Wir können einen Zugriff auf unsere Plugin-Optionsseite erhalten, indem wir den Rückgabewert von speichern add_options_page () in einer Klasseneigenschaft. Wir hatten zuvor keinen Bedarf für diesen Wert, also haben wir gerade angerufen add_options_page () ohne den Rückgabewert zu speichern.

Fügen Sie eine Klasseneigenschaft zu hinzu Gwyer_Plugin_Options:

protected $ plugin_options_page;

Dann in create_admin_menu_page (), Verwenden Sie diese neue Eigenschaft, um den Handle auf unserer Plugin-Optionsseite zu speichern:

öffentliche Funktion create_admin_menu_page () $ this-> plugin_options_page = add_options_page ('Administratorbenachrichtigungen', 'Administratorbenachrichtigungen', 'manage_options', __FILE__, array ($ this, 'render_options_page')); 

Wir können unsere JavaScript-Datei endlich einreihen, sodass sie nur auf der Plugin-Optionsseite geladen wird:

öffentliche Funktion enqueue_scripts ($ hook) if ($ hook! = $ this-> plugin_options_page) return;  wp_enqueue_script ('gwyer-admin-notice-js', plugin_dir_url (__FILE__). 'js / admin-notices.js'); 

Wenn alles gut gegangen ist, sehen Sie eine admin-notices.js wurde geladen! Nachricht an die Browser-Konsole ausgegeben.

Aktualisieren Sie den JavaScript-Code in admin-notices.php Zu dem Folgendem:

jQuery (Dokument) .ready (Funktion ($) $ (Dokument) .on ('click', '# an1 .notice-dismiss', Funktion (Ereignis) data = action: 'display_dismissible_admin_notice',; $. post (Ajaxurl, Daten, Funktion (Antwort) console.log (Antwort: 'DONE!'););););

Hier hören wir ein Klickereignis auf der an1 CSS-ID, die wir zuvor in unserer Administratorbenachrichtigung hinzugefügt haben. Sobald es angeklickt wird, wird eine Ajax-Anfrage ausgelöst. Lassen Sie uns als nächstes mit dieser Anfrage umgehen.

Im Gwyer_Dismissible_Admin_Notices :: init (), füge ein neues hinzu add_action Anruf:

add_action ('wp_ajax_display_dismissible_admin_notice', array (& $ this, 'display_dismissible_admin_notice'));

Dadurch wird die Callback-Funktion einmal ausgeführt display_dismissible_admin_notice Ajax-Anfrage wird ausgelöst. Denken Sie daran, dass dies ursprünglich als definiert wurde data.action Immobilie in unserer Ajax-Anfrage.

Nun füge das hinzu display_dismissible_admin_notice Rückruffunktion an Gwyer_Dismissible_Admin_Notices:

public function display_dismissible_admin_notice () echo "Ajax-Anfrage wird verarbeitet ..."; wp_die (); 

Speichern Sie Ihre Änderungen, laden Sie die Seite mit den Plugin-Optionen erneut und klicken Sie auf die Schaltfläche zum Löschen der Administratorbenachrichtigung, um die Ajax-Anforderung in Aktion anzuzeigen!

Wenn die Anfrage erfolgreich war, wird ein angezeigt Bearbeitung der Ajax-Anfrage… DONE! Nachricht in der Browser-Konsole angezeigt.

Der letzte Teil des Puzzlespiels besteht darin, eine benutzerdefinierte Option zu erstellen, die anfänglich auf "true" gesetzt ist. Diese Option wird jedoch auf "false" gesetzt, wenn Sie auf die Schaltfläche "Entfernen" klicken. Wenn die Plugin-Optionsseite geladen wird, wird der Administratorhinweis nur dann angezeigt, wenn der Wert der benutzerdefinierten Option "true" ist.

Im Gwyer_Dismissible_Admin_Notices :: init (), Fügen Sie einen zweiten Anruf zu hinzu register_activation_hook ():

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

Und füge das hinzu create_custom_option Rückruffunktion für die Klasse:

öffentliche Funktion create_custom_option () update_option ('gwyer-dismiss', true); 

Wenn nun das Plugin aktiviert ist, wird eine benutzerdefinierte Option aufgerufen gwyer-entlassen wird erstellt und auf gesetzt wahr.

Aktualisieren display_dismissible_admin_notice () So aktualisieren Sie unsere benutzerdefinierte Option, wenn die Ajax-Anfrage ausgelöst wird:

öffentliche Funktion display_dismissible_admin_notice () update_option ('gwyer-dismiss', false); wp_die (); 

Jetzt müssen Sie nur noch aktualisieren dismiss_admin_notice () um den Wert der benutzerdefinierten Option zu prüfen und die Administratorbenachrichtigung nur zu rendern, wenn sie auf true gesetzt ist.

öffentliche Funktion dismiss_admin_notice () $ whitelist_admin_pages = array ('settings_page_admin-notices / plugin-options'); $ admin_page = get_current_screen (); $ display_status = get_option ('gwyer-dismiss'); if (in_array ($ admin_page-> base, $ whitelist_admin_pages) && $ display_status):?> 

Entlassen Sie mich, wenn Sie können. Hahaha!

Deaktivieren und reaktivieren Sie das Plugin, um den hinzugefügten Code zu testen. Besuchen Sie die Plugin-Optionsseite, schließen Sie die Administratorbenachrichtigung und aktualisieren Sie die Seite. Die Bekanntmachung sollte nicht mehr sichtbar sein. Yay!

Da die benutzerdefinierte Option bei jeder Aktivierung des Plugins auf true gesetzt ist, können Sie die oben genannten Schritte wiederholen, um die unzulässige Verwaltungsbenachrichtigung so oft zu testen, wie Sie möchten.

Um es einfach zu halten, war dies ein einfaches Beispiel für die Verwendung einer Ajax-Anforderung zum Festlegen der benutzerdefinierten Benachrichtigungsoption. In der Praxis möchten Sie einen Nonce-Wert (einmal verwendete Zahl) verwenden, um die Ajax-Anforderung als Mindestmaßnahme für die Sicherheit zu überprüfen.

Dies war eine Menge Arbeit, um eine Administratorbenachrichtigung dauerhaft abzulehnen, aber der Endeffekt funktioniert gut und ist etwas, das Sie in Ihren eigenen Plugins gut einsetzen können.

Benutzerdefinierte Aktion Admin-Mitteilung Entlassung

Es ist an der Zeit, eine etwas andere Methode für das Ablehnen von Verwaltungsbenachrichtigungen zu suchen. Dies ist ein nagartiger Admin-Hinweis, der auf allen Admin-Bildschirmen angezeigt wird und nicht abgebrochen werden kann, bis eine Aktion ausgeführt wurde.

Hinweis: Verwenden Sie diese Methode mit Vorsicht, oder Sie riskieren, Ihre Plugin-Benutzer sehr schnell zu verfremden!

Die spezifische Aktion, auf die wir uns in unserem Beispiel konzentrieren, besteht darin, eine Administratorbenachrichtigung anzuzeigen, bis ein erforderliches Plugin oder eine Liste von Plugins installiert und aktiviert wurde.

Im Gegensatz zu der vorherigen Methode, bei der wir durch einen Ring springen mussten, um eine Verwaltungsbenachrichtigung als dauerhaft abzulehnen, ist die Lösung für diese Methode erfrischend einfach!

Kommentieren Sie zunächst alle Funktionsaufrufe aus Gwyer_Dismissible_Admin_Notices :: init (). Fügen Sie dann ein neues hinzu add_action () Funktion:

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

Und definieren Sie den Rückruf wie folgt:

öffentliche Funktion install_plugin_to_dismiss_admin_notice () if (! is_plugin_active ('hello-dolly / hello.php')):?> 

Bitte installieren und aktivieren Sie die Hallo Dolly Plugin.

Das ist alles dazu! Ich sagte doch, es sei einfach, oder??

Das einzige, was wir diesmal anders gemacht haben, war die Verwendung der is_plugin_active () WordPress-Funktion zum Testen, ob das Hello Dolly-Plugin installiert und aktiviert ist. Wenn nicht, is_plugin_active () gibt false zurück und unsere Admin-Benachrichtigung wird angezeigt.

Aktivieren Sie das Hello Dolly-Plugin, um zu überprüfen, ob der Admin-Hinweis erlischt.

Dies funktioniert gut für einzelne Plugins, aber was wäre, wenn Sie die Benutzer daran erinnern sollten, mehrere Plugins zu aktivieren? Anstelle der Hardcodierung in den Hello Dolly-Plugin-Informationen können wir ein Array erstellen, um unsere erforderlichen Plugins auf die Positivliste zu setzen.

Ersetzen install_plugin_to_dismiss_admin_notice () mit:

öffentliche Funktion install_plugin_to_dismiss_admin_notice () $ required_plugins = array ('Hello Dolly' => 'hallo-dolly / hello.php', 'Akismet' => 'akismet / akismet.php'); $ required_activating = array (); foreach ($ required_plugins als $ required_plugin_name => $ required_plugin_path) if (! is_plugin_active ($ required_plugin_path)) array_push ($ required_activating, $ required_plugin_name);  if (! empty ($ required_activating)):?> 

Bitte installieren und aktivieren Sie die folgenden Plugins: .

Die erforderlichen Plugins werden nun in einem Array gespeichert, in dem nachgeprüft wird, ob jedes Plugin aktiviert wurde. Für jedes Plugin, das derzeit nicht aktiv ist, wird der Name zu a hinzugefügt $ required_activating Array, das über den Admin-Hinweis als durch Kommas getrennte Liste der erforderlichen Plugin-Namen ausgegeben wird.

Benutzerdefinierte Administratorbenachrichtigungen

Bevor wir fertig sind, wollen wir ein wenig Spaß haben, indem wir unsere eigenen benutzerdefinierten Administratorbenachrichtigungstypen erstellen. Sehen wir uns an, wie Sie eigene benutzerdefinierte Benachrichtigungstypen hinzufügen. Inzwischen sind Sie mit den vier integrierten Administratorhinweisen, die WordPress standardmäßig bereitstellt, bestens vertraut, aber es ist nicht so schwierig, einige unserer eigenen zu finden.

Kommentieren Sie zunächst alle Funktionsaufrufe in aus Gwyer_Dismissible_Admin_Notices :: init () Also fangen wir mit einer sauberen Schieferplatte an.

Wir müssen CSS für unsere benutzerdefinierten Admin-Benachrichtigungstypen hinzufügen. Fügen Sie also im Root-Plugin-Ordner a ein css Ordner, und erstellen Sie eine Datei namens admin-notices.css. Fügen Sie eine neue ein, um sie auf allen Verwaltungsseiten einzufügen add_action anrufen Gwyer_Plugin_Options :: init ().

add_action ('admin_enqueue_scripts', array ($ this, 'enqueue_styles'));

Dann für die enqueue_styles () Callback, füge diese Methode derselben Klasse hinzu:

public function enqueue_styles () wp_enqueue_style ('gwyer-admin-notice-css', plugin_dir_url (__FILE__). 'css / admin-notices.css'); 

Lassen Sie uns nun eine neue Methode einrichten, um unsere benutzerdefinierten Administratorbenachrichtigungen auszugeben. Im Gwyer_Admin_Notices :: init (), hinzufügen:

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

Fügen Sie dann einen Rückruf hinzu, um eine Reihe von benutzerdefinierten Administratorhinweisen anzuzeigen:

 / ** * Benutzerdefinierte Admin-Hinweise ausgeben. * / public function custom_admin_notices () ?> 

Houston, ich denke auf jeden Fall haben wir ein Problem!

Herzlichen Glückwunsch, Sie haben den Admin-Benutzer des Jahres gewonnen!

Das ist jetzt eine großartige Idee.

Lass uns verbinden!

Schließen Sie sich Neo an und folgen Sie dem weißen Kaninchen. Wenn Sie ihn sehen, geben Sie ihm diese Karotte. Das Kaninchen ist nicht Neo!

Fügen Sie schließlich CSS hinzu admin-notices.css So gestalten Sie unsere benutzerdefinierten Administratorbenachrichtigungen:

.Hinweis-großer Fehler Rand: 3px durchgehend rot; -webkit-transform: rotateZ (-1deg); -ms-transform: rotateZ (-1deg); transform: rotateZ (-1deg);  .notice-admin-user-award border-left: 5px durchgehend violett;  .notice-admin-user-award p: vor font: normale 24px / 1 'dashicons'; Inhalt: "\ f313"; Farbe lila;  .notice-light-bulb border-right: 5px fest # e2e224;  .notice-light-bulb p: vor font: normal 22px / 1 'dashicons'; Inhalt: "\ f339"; Farbe: # e6e610;  .notice-social-media border-left: 5px solide # 1da25f; Polsterung unten: 5px;  .notice-social-media p padding-bottom: 0; Rand unten: 4px;  .notice-social-media: after font: normal 22px / 1 'dashicons'; Inhalt: "\ f301 \ f304 \ f462"; Farbe: # 888;  .notice-neo border-right: 10px festes orangered; links: 10px fest orangeriert;  .notice-neo p: vor font: normal 22px / 1 'dashicons'; Inhalt: "\ f511"; Farbe: orangered; 

Laden Sie nach dem Speichern der Änderungen eine beliebige Verwaltungsseite, um unsere benutzerdefinierten Verwaltungshinweise anzuzeigen.

Nach den Ergebnissen zu urteilen, ist es wahrscheinlich eine gute Idee, benutzerdefinierte Admin-Hinweise sparsam zu verwenden. Andernfalls laufen Sie Gefahr, dass sie grell aussehen. 

Ich werde nicht auf Details über das verwendete benutzerdefinierte CSS eingehen. Es ist nur für ein bisschen Spaß und das Styling ist ziemlich selbsterklärend.

Wir haben Dashicons-Zeichensymbole für unsere benutzerdefinierten Administratorbenachrichtigungen verwendet, da diese standardmäßig im WordPress-Administrator verfügbar sind. Sie können jedoch beliebige Symbole importieren und für zusätzliche Dekoration verwenden.

Probieren Sie den Code selbst aus

Der gesamte Code aus dieser Lernprogrammreihe wurde in ein WordPress-Plugin für Sie zum Download bereitgestellt. Sehen Sie sich den Code an, erweitern Sie ihn und implementieren Sie neue Methoden, um Administratorbenachrichtigungen anzuzeigen (und zu schließen). Lass mich in den Kommentaren wissen, ob du etwas Cooles kreierst! Ich würde gerne sehen, was Sie dazu bringen.

Fazit

Vielen Dank, dass Sie an dieser vierteiligen Tutorialserie teilgenommen haben. Hoffentlich haben Sie jetzt viel mehr Vertrauen in die Implementierung von Verwaltungsbenachrichtigungen in Ihren eigenen Projekten.

Wir haben viele verschiedene Aspekte von WordPress-Verwaltungsbenachrichtigungen behandelt, einschließlich mehrerer Möglichkeiten, sie dauerhaft zu verwerfen, was ohne benutzerdefinierten Code nicht möglich ist.

Das Erstellen eigener benutzerdefinierter Administratorbenachrichtigungen ist auch ziemlich einfach, aber in der Praxis sollten Sie sie in Ihren eigenen Projekten sparsam einsetzen. In den meisten Fällen empfiehlt es sich, die Standard-WordPress-Stile beizubehalten, um eine konsistente Benutzererfahrung zu gewährleisten.

WordPress hat eine unglaublich aktive Wirtschaft. Es gibt Designs, Plugins, Bibliotheken und viele andere Produkte, mit deren Hilfe Sie Ihre Site und Ihr Projekt ausbauen können. Der Open-Source-Charakter der Plattform macht sie außerdem zu einer großartigen Option, mit der Sie Ihre Programmierkenntnisse verbessern können. In jedem Fall können Sie sehen, was wir auf dem Envato-Markt zur Verfügung haben.

Und vergessen Sie nicht, das Plugin herunterzuladen und mit dem Code herumzuspielen. Dies ist eine großartige Möglichkeit, um sich mit dem Zusammenpassen aller Teile vertraut zu machen. Und bitte lassen Sie mich Ihre Meinung zum Tutorial über die folgenden Kommentare wissen.