WordPress für die Entwicklung von Webanwendungen Ereignisse, Aktionen und Filter

In dieser ganzen Serie haben wir uns angesehen, wie WordPress zum Erstellen von Webanwendungen verwendet werden kann.

Bis zu diesem Punkt haben wir festgestellt, dass WordPress eine Grundlage - und nicht ein Framework - ist, und wir haben ein wenig darüber gesprochen, wie vermieden werden muss, dass versucht wird, WordPress in ein anderes Designmuster als das seines ursprünglichen Typs zu integrieren.

Zu diesem Zweck haben wir festgestellt, dass WordPress ein ereignisgesteuertes Entwurfsmuster verwendet und dieses mit seinem System von Aktionen und Filtern am besten dargestellt wird.

Obwohl der allgemeine Zweck dieser Serie darin besteht, einen Überblick darüber zu geben, wie WordPress für die Entwicklung von Webanwendungen verwendet werden kann, ist es meiner Meinung nach wichtig, einige praktische Beispiele zu betrachten, wie effektiv das Hook-System wirklich ist, um zu verstehen, wie dies funktioniert Wir als Entwickler können WordPress an unsere Bedürfnisse anpassen.

In diesem Artikel werfen wir einen Blick auf etwas Code, der einige allgemeine Aktionen darstellt, die mit WordPress-Hooks erreicht werden können, sowie einige nicht standardmäßige Funktionen.

Letztendlich sollten Sie am Ende des Artikels ein klares Verständnis dafür haben, warum die ereignisgesteuerte Natur von WordPress für die Erstellung von Anwendungen von entscheidender Bedeutung ist und warum wir nicht versuchen sollten, WordPress und die ihm zugrunde liegenden Muster in etwas zu verwandeln, das sie sind nicht.


Hooks: Aktionen und Filter

Im vorherigen Artikel haben wir zwei Definitionen angegeben - eine speziell für Aktionen und eine speziell für Hooks:

Aktionen sind Ereignisse im WordPress-Seitenlebenszyklus, wenn bestimmte Dinge aufgetreten sind - bestimmte Ressourcen werden geladen, bestimmte Funktionen stehen zur Verfügung und je nachdem, wie früh die Aktion stattgefunden hat, müssen noch einige Dinge geladen werden.

Filter sind Funktionen, die WordPress an bestimmten Stellen des Seitenlebenszyklus durchläuft. Sie sind in erster Linie dafür verantwortlich, Daten abzufangen, zu verwalten und zurückzugeben, bevor sie an den Browser übertragen oder vom Browser in die Datenbank gespeichert werden.

Dies ist der Schlüssel zum Verständnis der beiden Arten von WordPress-Ereignissen, da es Zeiten geben kann, in denen Sie einen Prozess vorab entschlüsseln, einen Prozess verfolgen oder Informationen bearbeiten müssen, bevor er auf dem Bildschirm angezeigt wird.

Die Kenntnis der Unterschiede bei Aktionen und Filtern ist der Schlüssel zum Erstellen von Anwendungen, Plugins und Designs in WordPress.

Zu diesem Zweck werden wir die Diskussion anhalten Warum WordPress kann für Webanwendungen verwendet werden und bietet einen praktischen Überblick über verschiedene Aktionen und Filter, um sicherzustellen, dass wir alle verstehen, wie das Ereignissystem funktioniert, welche Arten von Dingen wir damit tun können, und hoffentlich die Kreativität fließen lässt diese können verwendet werden, um eine individuellere erfahrung zu erstellen.

Gemeinsame Aktionen

Zunächst werfen wir einen Blick auf mehrere Aktionen, von denen jede an Komplexität zunimmt, um zu zeigen, wie mächtige Aktionen werden können.

1. Hinzufügen einer JavaScript-Datei zur Kopfzeile

Diese Aktion ist so häufig, dass sie selbst bei den meisten Intermediates der Entwickler eine Rolle spielt. Dennoch bleibt der Punkt: Dies ist ein Beispiel für eine klassische WordPress-Aktion, die in fast jedem Thema verwendet wird.

Kurz gesagt, nutzt es die wp_enqueue_scripts Haken. Dies wird beim Laden der Seite ausgelöst und Sie können WordPress mitteilen, welche Quelldateien es enthalten soll woher es sollte es enthalten (wie in, in der Kopfzeile oder der Fußzeile).

Funktion example_add_theme_scripts () wp_enqueue_script ('re-example-script', get_stylesheet_directory_uri (). '/js/example.js', array ('jquery'), '1.0.0', FALSE);  add_action ('wp_enqueue_scripts', 're_add_theme_scripts');

Das ist leicht zu verstehen, richtig?

Schnappen Sie sich das Skript im Thema beispiel.js Datei aus dem JavaScript-Verzeichnis. Stellen Sie sicher, dass sie als abhängig vom Laden von jQuery markiert ist. Beachten Sie, dass es sich um Version 1.0.0 des Skripts handelt nicht möchte es in die Fußzeile laden.

2. Anpassen der Weiterlesen Verknüpfung

WordPress bietet standardmäßig die Möglichkeit, einen Link "Mehr lesen" oder "Weiter lesen" hinzuzufügen, der durch die Verwendung der Tag im Post-Editor.

Sie können den Stil mit nativen Stilen gestalten. Nehmen wir jedoch an, Sie möchten zusätzlichen Code hinzufügen, um ihn besser in Ihr Design einzufügen, einfacher in ein responsives Design zu integrieren oder ähnliches.

Sie können dann die folgende Aktion verwenden:

Funktion example_add_more_link_class ($ link, $ text) $ html = '
'; $ html. = '
'. $ link '
'; $ html. = '
'; return $ html; add_action ('the_content_more_link', 'example_add_more_link_class', 10, 2);

Beachten Sie, dass wir uns einhaken the_content_more_link die den Anker und den Text des Ankers für den Link mehr akzeptiert.

Innerhalb der Funktion wickeln wir dann die eigentliche Verknüpfung in ihre eigene ein div Container, damit wir die Gestaltung des Links besser steuern können.

3. Rufen Sie den Namen einer Person über Ajax ab

In diesem Beispiel wird davon ausgegangen, dass Sie Ajax in Ihrem Projekt verwenden und bereits die richtigen Einrichtungen eingerichtet haben, um sicherzustellen, dass Sie asynchrone Anforderungen stellen können.

Dies setzt auch voraus, dass die Daten, die vom Client an den Server gesendet werden, die ID eines Benutzers sind, für den Sie seinen Namen zurückgeben möchten.

Funktion example_get_user_name () $ user = null; if (isset ($ _GET ['user_id']) && 0 < strlen( trim( $_GET['user_id'] ) ) )  $user = get_user_by( 'id', $_GET['user_id'] ); if ( FALSE == $user )  echo $user->Vorname;  else echo '-1';  // end wenn die;  // Ende von re_get_employee_by_name add_action ('wp_ajax_example_get_user_name', 'beispiel_get_user_name'); add_action ('wp_ajax_nopriv_example_get_user_name', 'beispiel_get_user_name');

Im obigen Beispiel prüfen wir zuerst, ob Benutzeridentifikation wird in eingestellt $ _GET Wenn dies der Fall ist, wird versucht, den Benutzer von dieser ID abzurufen.

Wenn der Benutzer vorhanden ist, sendet er den Vornamen des Benutzers an den Client zurück. Andernfalls wird es ein Echo-1'. Dies gibt uns die Flexibilität, auf der Kundenseite angemessen zu reagieren.

Allgemeine Filter

Genau wie bei den oben genannten Aktionen werden wir uns einige Filter ansehen, von denen jeder etwas komplexer wird, sodass wir einige der Dinge sehen können, die wir mit Filtern tun können, die uns gewähren größere Flexibilität in unseren WordPress-Projekten.

1. Anhängen von Inhalten an einen einzelnen Beitrag

Obwohl der Titel dieser bestimmten Aktion klar genug sein sollte, nehmen Sie an, Sie möchten am Ende jedes Posts in Ihrem Blog einen Satz hinzufügen, jedoch nicht Sie nur möchte es auf einzelne Beiträge tun.

Dies kann mit dem folgenden Code erreicht werden:

Funktion example_append_post_content ($ content) if (is_single ()) $ html = '
'; $ html. = 'Dieser Inhalt wird am Ende eines Beitrags angezeigt.'; $ html. = '
'; $ content. = $ html; return $ content; add_filter ('the_content', 'example_append_post_content');

Das ist leicht zu verstehen, richtig?

der Inhalt filter übergibt den eigentlichen Inhalt des Beitrags an die Hook-Funktion. Von hier aus können wir die Daten auf jede Art und Weise manipulieren, die wir für richtig halten.

In unserem Fall prüfen wir zunächst, ob es sich um eine einzelne Seite handelt. Wenn ja, dann fügen wir ein Post-Suffix Container mit einem einzelnen Satz anhängen, an den Inhalt anhängen und dann zurückgeben.

Wenn es sich nicht um einen einzelnen Beitrag handelt, wird der Inhalt normal zurückgegeben.

2. Benutzer nach der Anmeldung umleiten

Ein anderer Filtertyp, den Sie nutzen möchten, ist das Umleiten von Benutzern, nachdem sie sich bei der Anwendung angemeldet haben.

Wenn sie beispielsweise ein Administrator sind, sollten sie zum Post-Dashboard geleitet werden. Andernfalls sollten sie zur Homepage der Website weitergeleitet werden.

Um dies zu erreichen, können wir das nutzen login_redirect filter:

Funktion example_login_redirect ($ redirect_to, $ request, $ user) return (isset ($ user-> rollen) && is_array ($ user-> rollen) && in_array ('administrator', $ user-> rollen))? home_url ('/ wp-admin /'): home_url ();  // Ende soi_login_redirect add_filter ('login_redirect', 'example_login_redirect', 10, 3);

Im obigen Code haben wir einen benutzerdefinierten Filter für die login_redirect Hook, der Folgendes ausführt:

  • Wenn der Benutzer ein Administrator ist, leiten Sie ihn an das Dashboard weiter
  • Ansonsten leiten Sie sie an die home_url Der Seite.

Leicht genug.

Obwohl es sich um ein relativ einfaches Beispiel handelt, sollten Sie über die erweiterten Funktionen nachdenken, die Sie je nach den Rollen und / oder Fähigkeiten des Benutzers ausführen können.

Anstatt sie nur auf bestimmte Aspekte der Anwendung umzuleiten, können Sie ihnen beispielsweise verschiedene Informationen anzeigen, die auf ihren Rollen basieren.

3. Anpassen von E-Mails

Dieses spezielle Beispiel ist etwas komplizierter, weil die add_filter Aufrufe kommen in den Kontext einer anderen Funktion, die einen Anrufer eines Drittanbieters hat.

Insbesondere werden wir eine E-Mail senden. Wir möchten jedoch sicherstellen, dass wir den Inhaltstyp, den Inhalt und den Namen vor dem Senden des Inhalts angepasst haben.

Dazu müssen wir zunächst eine Funktion definieren:

Funktion example_exmail_user ($ input) // Code aus der Kürze entfernt. // Angenommen, $ message ist definiert als Inhalt der E-Mail add_filter ('wp_mail_content_type', create_function ("," return "text / html"; ')); add_filter (' wp_mail_from ',' example_mail_from '); add_filter (' wp_mail_from_name) ',' example_mail_from_name '); if (wp_mail ($ input [' email-address '],' Ihr Konto wurde erstellt!, $ message)) // Weiterleitung nach Hause wp_redirect (home_url ()); else  // Eine Seite angeben, an die bei einem Fehler weitergeleitet werden soll exit; Funktion example_mail_from ($ email) return '[email protected]'; Funktion example_mail_from_name ($ name) return 'Example Web App';

Danach müssen wir Funktionen definieren, die mit dem Filter verknüpft sind und oben angegeben wurden. Nämlich…

  • wp_mail_content_type
  • wp_mail_from
  • wp_mail_from_name

Wie Sie sehen, können Filter relativ schnell kompliziert werden, sind es aber mächtig Und wenn Sie verstehen, was Sie tun und wie alle Teile so zusammenpassen, können Sie wirklich erstaunliche Sachen machen.


Kratzen Sie einfach die Oberfläche

Wie bei den meisten Tutorials und Beispielen auf dieser Website, kratzen wir nur an der Oberfläche dessen, was mit dem WordPress-Hook-System möglich ist.

Natürlich sind diese Beispiele genau das - Beispiele dafür, wie mächtig Aktionen und Filter sein können, wenn es darum geht, das WordPress-Erlebnis individuell anzupassen.

Obwohl dieser bestimmte Artikel und der Beispielcode als praktisches Beispiel für einige der Dinge dienen sollen, die Sie tun können, sind sie nicht als endgültige Anleitung für das Arbeiten mit Hooks gedacht.

Stattdessen sollen sie zeigen, wie wir beim Erstellen einer Webanwendung die Vorteile der WordPress-API nutzen können.


Als nächstes…

Im nächsten Artikel werden wir uns zunächst die verschiedenen von WordPress bereitgestellten Einrichtungen ansehen. Wir werden sehen, wie sie beim Erstellen von Webanwendungen nützlich sind, wie sie für unsere spezifische Arbeit genutzt werden können und wie sie beim Erstellen von Webanwendungen nützlich sein können.

Anschließend schauen wir uns an, wie viele dieser Funktionen im Kontext einer Webanwendung gut funktionieren, und wie wir Hooks verwenden können, um das von ihnen bereitgestellte Verhalten weiter anzupassen.