Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress
Code

Hinzufügen benutzerdefinierter Haken in WordPress: Benutzerdefinierte Filter

by
Difficulty:BeginnerLength:LongLanguages:
This post is part of a series called Adding Custom Hooks in WordPress.
Adding Custom Hooks in WordPress: Custom Actions

German (Deutsch) translation by Wei Zhang (you can also view the original English article)

In dieser zweiteiligen Serie werfen wir einen Blick auf das WordPress-Hook-System. Im Einzelnen betrachten wir sowohl die Aktionen und Filter als auch die Rolle, die sie in der WordPress-Entwicklung spielen.

Obwohl beide als Hooks definiert sind, spielt jeder eine besondere Rolle in der WordPress-Entwicklung. Und wenn Sie ein erfahrener WordPress-Entwickler werden möchten, ist es wichtig, nicht nur den Unterschied zwischen ihnen zu verstehen, sondern auch, wie Sie benutzerdefinierte Hooks implementieren können.

Im ersten Beitrag der Serie haben wir definiert, was Hooks waren, haben gesehen, wie sie an anderer Stelle verwendet wurden, und wir haben auch Aktionen untersucht, einschließlich der Definition unserer eigenen. Wenn Sie den ersten Artikel noch nicht gefunden haben, empfehle ich dringend, ihn zu lesen, bevor Sie mit diesem Tutorial fortfahren.

Bevor ich mit Hooks anfange, werde ich kurz aufklären, was im vorherigen Artikel besprochen wurde.

Lass uns damit anfangen.

Eine schnelle Aktualisierung

Im vorherigen Artikel haben wir gesehen, wie Haken eine Implementierung des ereignisgesteuerten Entwurfsmusters sind. Insbesondere haben wir es wie folgt definiert:

  • Die Software hat bestimmte Punkte, an denen sie eine Nachricht sendet, dass etwas passiert ist.
  • Als Entwickler können wir Code schreiben, der auf diese Nachricht wartet, und dann mit benutzerdefiniertem Code darauf reagieren.

Und dann haben wir im gesamten Inhalt genau überprüft, wie dieses Muster in WordPress implementiert wird. Wir haben darüber gesprochen, wie wir es nutzen können, und dann haben wir darüber gesprochen, wie wir unsere eigenen Maßnahmen umsetzen können.

Wir haben auch einen subtilen Unterschied erkannt:

Aktionen sollen mit Funktionen arbeiten, und Filter sollen mit Daten arbeiten.

Während Aktionen es uns ermöglichen, das Verhalten von Objekten zu ändern, können Filter Daten ändern, bevor sie gespeichert, abgerufen oder auf dem Bildschirm angezeigt werden. In diesem Lernprogramm erfahren Sie, wie Sie mit Filtern arbeiten, bevor Sie Daten auf den Bildschirm schreiben, z. B. wie Sie den Text klein schreiben und Vokale aus dem Text entfernen.

Letztendlich geht es darum zu versuchen, Spaß zu haben und durch unsere Arbeit greifbare Ergebnisse zu sehen, während wir alles über diesen mächtigen Aspekt von WordPress lernen.

Bevor wir dies tun, müssen wir sicherstellen, dass unsere lokale Entwicklungsumgebung eingerichtet und einsatzbereit ist.

Fertig machen

Erinnern Sie sich an den vorherigen Artikel, dass unsere lokale Entwicklungsumgebung aus den folgenden bestehen sollte:

  • WordPress 4.5.2
  • Ihre bevorzugte IDE
  • ein Webserver
  • eine Kopie von PHP
  • eine Datenbank

Für viele können Apache, PHP und MySQL leicht installiert werden. Wenn Sie fortgeschrittener sind, verwenden Sie möglicherweise etwas wie Nginx und eine alternative Datenbank. Wenn das der Fall ist, ist das in Ordnung, aber für die Zwecke dieses Tutorials gehe ich davon aus, dass Sie das Erste haben.

Und wenn Sie nichts davon eingerichtet haben, dann machen Sie sich keine Sorgen:Wir geben dir Deckung. Das verlinkte Tutorial enthält alles, was Sie benötigen, um mit WordPress auf Ihrem lokalen Computer zu arbeiten.

Sobald Sie fertig sind, können wir fortfahren.

Grundlegendes zu WordPress-Filtern

Der WordPress-Codex bietet umfassende Ressourcen für alle, die sich mit Filtern vertraut machen möchten. Wie bereits erwähnt, definiert es Filter wie folgt:

Benutzerdefinierte Filter unterscheiden sich von benutzerdefinierten Aktionen, da Sie mit benutzerdefinierten Aktionen Code zu vorhandenen Aktionen hinzufügen oder daraus entfernen können. Mit benutzerdefinierten Filtern können Sie bestimmte Daten (z. B. eine Variable) ersetzen, die in einer vorhandenen Aktion gefunden werden.

Wenn Sie jedoch eine vollständige Liste der verfügbaren Filter in WordPress suchen, verweisen Sie auf diese Seite (und setzen Sie ein Lesezeichen) für diese Seite im Codex. Es verfügt über Filter mit einer Dauer von etwa 20 Sekunden, von denen viele mit einer eigenen Seite der Dokumentation verknüpft sind.

Wenn Sie also wissen möchten, ob ein bestimmter Filter vorhanden ist, können Sie auf diese Seite verweisen. Auf ähnliche Weise können Sie die Seite dieses bestimmten Filters besuchen, um die Parameterparameter, eine Beispielfunktionsdefinition und die Verwendung dieser Parameter zu ermitteln.

Ein Wort zu Priorität und Parametern

Bevor wir weiter fortfahren, möchte ich sicherstellen, dass wir alle auf der gleichen Seite sind, auf welche Priorität und auf wie viele Argumente sich bezogen wird, wenn wir im Kontext von WordPress-Hooks über sie sprechen.

Nehmen Sie zum Beispiel die folgende Codezeile:

Das sagt uns vier Dinge:

  1. Der Name des Filters, in den wir einhängen
  2. Der Name der Funktion, die aufgerufen werden soll
  3. die Priorität, wann die Funktion aufgerufen werden soll
  4. wie viele Parameter die Funktion akzeptieren soll

Im Allgemeinen werden die ersten beiden Punkte schnell verstanden. Die anderen beiden können jedoch häufig neue Entwickler zum Absturz bringen, aber das Konzept ist nicht schwer zu verstehen.

Stellen Sie sich zunächst die Priorität so vor, als würde die Funktion aufgerufen. Denken Sie daran, dass mit einem bestimmten Hook mehrere Funktionen verknüpft werden können. Mit Priorität können Sie festlegen, wann und wann Ihre Funktion aufgerufen wird. Je niedriger die Zahl, desto eher feuert es; Je höher die Zahl, desto später feuert er.

Zweitens die Zahl, die angibt, wie viele Parameter ein Argument benötigt. Wenn Sie keine Zahl angeben, akzeptiert diese entweder keine oder das Standardargument. Wenn Sie einen anderen Betrag als erwartet übergeben möchten, geben Sie an, wie viele Parameter das Argument akzeptieren soll. Wir werden das später im Tutorial genauer sehen.

Mit Filtern arbeiten

Um mit der Arbeit mit Filtern zu beginnen, erstellen Sie eine eigene Datei im Stammverzeichnis des Verzeichnisses twentysixteen. Wir nennen die Datei tutsplus-filters.php. Dann fügen wir in twentysixteens functions.php die folgende Codezeile hinzu:

Dadurch wird sichergestellt, dass sich der gesamte benutzerdefinierte Code in einer einzigen Datei befindet, die wir ausschließen können, wenn wir ihn nicht verwenden möchten. Es hält es auch in seinem eigenen Bereich, so dass es nicht mit Code, der im Design vorhanden ist, eingebacken wird.

Posting-Inhalt filtern

Bevor wir mit der Definition unserer eigenen benutzerdefinierten Filter beginnen, ist es wichtig zu verstehen, wie Filter funktionieren. Da Filter dazu dienen sollen, Daten zu ändern, und da Posts ein Baustein eines Blogs sind, wollen wir uns ansehen, wie wir den Inhalt eines Blogposts filtern können, bevor er auf dem Bildschirm angezeigt wird.

Beachten Sie beim Durcharbeiten dieses Beispiels, wie es ähnlich ist, wie wir mit WordPress-Aktionen arbeiten. Statt jedoch das Verhalten zu ändern, werden Daten geändert.

1. Registrierung unseres Filters

Um unseren Filter zu registrieren, benötigen wir zwei Informationen:

  1. Der Name des Filters, an den wir unsere Funktion hängen
  2. eine Funktion, die für das Filtern der Daten verantwortlich ist

Da wir den Post-Inhalt ändern werden, können wir the_content-Filter nutzen. Der Kern der Funktion ist wie folgt:

  • Es akzeptiert ein einzelnes Argument, den Post-Inhalt, ermöglicht es uns, es zu ändern, und gibt es dann an den Aufrufer zurück

In diesem Fall übergibt WordPress den Beitragsinhalt an die Funktion, und die Funktion gibt dann die Daten zurück, sobald die Arbeit abgeschlossen ist.

Nennen wir unsere benutzerdefinierte Funktion tutsplus_the_content und registrieren Sie sie dann bei WordPress.

Grundsätzlich sollte die Funktion so aussehen. Natürlich macht es nicht viel. Der Inhalt wird einfach zurückgegeben.

2. Ändern des Inhalts

Lassen Sie diese Funktion die Daten ein wenig ändern. Lassen Sie uns folgendes tun:

  1. Stellen Sie sicher, dass der Beitrag in der Ansicht für einen einzelnen Beitrag angezeigt wird
  2. Fügen Sie am Anfang des Beitrags eine Nachricht hinzu, in der erläutert wird, dass der Beitragsinhalt geändert wird

Es ist nicht die praktischste Verwendung eines Filters, aber Sie erhalten eine Vorstellung davon, wie Sie die Funktion ändern können.

So sollte der Code aussehen. Beachten Sie auch die Code-Kommentare:

Wenn Sie die Seite in der Indexansicht oder in der Hauptansicht des Blogs anzeigen, sehen Sie die Standardposts, die genauso aussehen, wie sie ohne Änderung wären. Wenn Sie jedoch einen einzelnen Beitrag besuchen, wird oben in jedem Beitrag eine neue Phrase angezeigt. Im Einzelnen sehen Sie:

Dies ist eine benutzerdefinierte Nachricht, die von einer Hook-Funktion erstellt wird.

Aber lass uns etwas fortgeschritteneres tun. Neben dem Hinzufügen einer Nachricht oben im Inhalt entfernen wir alle Vokale aus dem Post-Inhalt, bevor sie an WordPress zurückgegeben werden.

Dazu verwenden wir den folgenden Code:

Implementieren Sie diesen Code, speichern Sie ihn und besuchen Sie einen beliebigen Beitrag in Ihrer WordPress-Installation.

Technisch gesehen macht die obige Funktion zwei Dinge. Um mehr zusammenhängenden Code zu schreiben, empfehle ich, das Verhalten in separate Funktionen zu unterteilen und von unserer Hauptfilterfunktion aufgerufen zu werden.

So könnte das Endergebnis aussehen:

Auch dies ist keine unglaublich praktische oder nützliche Implementierung eines Filters, zeigt aber genau, was wir tun können, wenn wir unsere eigene Funktion einrichten.

Benutzerdefinierte Filter definieren

Es ist jedoch leicht, bereits vorhandene Filter zu nutzen. Wie bereits erwähnt, ist es eine einfache Sache, add_filter aufzurufen, den Namen des Filters anzugeben und dann den Namen der Funktion zu übergeben, die zum Filtern der Daten aufgerufen werden soll.

Was aber, wenn wir Ihren eigenen benutzerdefinierten Filter erstellen möchten? Vielleicht möchten wir einen Filter erstellen, der den gesamten Text des Beitrags in Kleinbuchstaben schreibt. Oder möchten wir vielleicht einen Filter erstellen, der alle Vokale aus einem Beitrag entfernt?

Verständnis von apply_filters

Hier beginnen wir, sich für apply_filters zu interessieren. Diese bestimmte Funktion akzeptiert zwei Argumente:

  1. ein Tag, das den Namen des Filterhakens angibt
  2. Ein Wert, der sich auf den Wert bezieht, auf den die Filter angewendet werden

Wenn Sie sich ein Beispiel von get_the_content in WordPress-Core ansehen, werden Sie feststellen, dass der angegebene Wert über apply_filters über the_content_more_link übergeben wird.

Und das ist nützlich, um zu verstehen, aber wie definieren wir unsere eigenen benutzerdefinierten Filter, so dass andere apply_filters mit der von uns entwickelten Funktionalität aufrufen können?

Eigene Filter hinzufügen

Das Hinzufügen eigener Filter ist einfach. Wir müssen die gleichen vier Dinge angeben, die wir oben umrissen haben:

  1. der Name des Filters
  2. die Funktion, die der Filter aufrufen soll
  3. die Priorität der Funktion
  4. die Anzahl der Argumente, die akzeptiert werden sollen

Beginnen wir mit einem einfachen Beispiel.

Kleinbuchstaben alles

sicherstellen, dass der Inhalt des gesamten Beitrags in Kleinbuchstaben dargestellt wird.

Zunächst möchten wir den Filter mit einer Priorität von 10 definieren. Wir wissen, dass nur ein einziges Argument, der Inhalt, akzeptiert wird. Daher geben wir beim Hinzufügen unseres Filters die Zahl 1 weiter:

Als Nächstes definieren wir einen einfachen Funktionskörper, der die strtolower-Funktion von PHP zur Herabsetzung des Werts verwendet, der an ihn übergeben wurde, und wir geben ihn zurück.

Die endgültige Version des Codes sieht folgendermaßen aus:

Leicht genug zu verstehen, richtig? Schauen wir uns ein weiteres Beispiel an, das auf einigen Funktionen basiert, die wir bereits geschrieben haben.

Entferne alle Vokale

Um die Vokale zu entfernen, können wir dieselbe Funktion verwenden, die wir bereits definiert haben. Wir müssen jedoch die Art und Weise ändern, in der der Filter in WordPress registriert wird. Dann müssen wir sicherstellen, dass die bei WordPress registrierte Funktion apply_filters korrekt aufruft.

Da wir gesehen haben, wie man einen eigenen Filter hinzufügt, eine Priorität angibt, die Anzahl der Argumente definiert und eine Funktion implementiert, werde ich keine Zeit mit unbedeutenden Details verschwenden.

Hier ist der Filter und er wird ganz alleine aufgerufen:

Und so können Sie es vom ersten Haken aus aufrufen.

Sie alle zusammen anrufen

Schließlich ist es möglich, apply_filters mehrmals aufzurufen:

Beachten Sie, dass dies dasselbe Ergebnis wie in den vorherigen Fällen erzielt, jedoch durch Verdichtung in einer einzigen Codezeile. Es gibt auch andere Möglichkeiten, wie dies geschrieben werden könnte. In diesem Tutorial erfahren Sie jedoch, wie Sie Ihre eigenen Filter schreiben und wie Sie apply_filters für Ihre eigene Arbeit nutzen können.

Fazit

Dieses Tutorial schließt unsere Einführung in WordPress-Hooks ab. In der gesamten Serie haben wir überprüft, wie Sie vorhandene Aktionen und Filter nutzen und eigene erstellen und implementieren können.

Das Hook-System ist einer der mächtigsten Aspekte von WordPress für Entwickler. Daher ist es wichtig, sich mit ihm vertraut zu machen. Auf diese Weise können Sie nicht nur das Verhalten und die Daten ändern, die WordPress bietet, sondern Sie können auch eigene Hooks definieren, die andere Entwickler in ihrem eigenen Code verwenden können.

Fühlen Sie sich frei, mit dem Quellcode zu spielen, der in beiden Lernprogrammen bereitgestellt wurde.

Wenn Sie nach anderen Dienstprogrammen suchen, die Sie dabei unterstützen, Ihre wachsenden Werkzeuge für WordPress aufzubauen, oder um Code zu lernen, der sich mit WordPress auskennt, sollten Sie nicht vergessen, was wir in Envato Market anbieten.

Denken Sie daran, dass Sie alle meine Kurse und Tutorials auf meiner Profilseite sehen können. Sie können mir auf meinem Blog und / oder Twitter unter @tommcfarlin folgen, wo ich über verschiedene Softwareentwicklungsmethoden spreche und wie wir sie in WordPress einsetzen können.

Bitte zögern Sie nicht, Fragen oder Kommentare in den untenstehenden Feed zu schreiben, und ich werde versuchen, auf jeden von ihnen zu antworten.

Ähnliche Resourcen

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.