Software & Infrastruktur

WordPress erweitern: Das Blogsystem um neue Funktionen ergänzen

Seite 2 / 3

Das Hook-System

Zu verstehen, wie diese Hooks genau funktionieren, kann in der Vorüberlegung, welche Applikation zum Einsatz kommen soll, eine große Rolle spielen. Auf die „Haken“ greift der WordPress-Core zu, um interne Funktionen aufzurufen. Gleichzeitig können zusätzliche Funktionen an diesen Punkten einhaken. Damit bleibt der Code überschaubar, besser nachvollziehbar und man kann mit eigenen Ideen eingreifen, ohne den Core anzufassen. Auf diesem Wege können Funktionen darüber hinaus schnell, einfach und unkompliziert aktiviert oder deaktiviert werden.

Hooks sind das klassische System, um Funktionen zu ändern. Man unterscheidet zwischen Action- und Filter-Hooks. Die Filter-Hooks ermöglichen den Zugriff auf spezifizierte Daten zum Filtern; Inhalt oder Text
lassen sich so schnell ändern und wieder ausgeben.

PHP
add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1);

Listing 1

Die Action-Hooks ermöglichen via „add_action()“ das Hinzufügen und
Entfernen von Funktionen, die eine Core-Datei von
WordPress auslöst. Mit dem Aufruf einer bestimmten
Funktion des Core wird dann die jeweilige Funktion mitgenutzt, die auf den entsprechen Hook referenziert.

PHP
add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1);

Listing 2

Man kann in Erweiterungen
auch eigene Hooks setzen, die auf der API von WordPress basieren.

Eine dritte Möglichkeit, in das System einzugreifen, besteht darin, Funktionen vollständig zu ersetzen. Alle Funktionen, die diese Möglichkeit bieten und die für Plugin-Autoren interessant sind, findet man in der Datei „wp-includes/pluggable.php“. Der dort enthaltene Code sucht im System nach gleichnamigen Funktionen und wendet dann statt des Originals das alternative Skript im Core an.

PHP
if ( !function_exists('set_current_user') ) :
...

Listing 3

Dies ist insbesondere dann interessant, wenn man WordPress mit anderen Systemen verbinden will und beispielsweise in beiden Systemen auf eine User-Tabelle zugreifen will.

WordPress Stack

Um Erweiterungen für WordPress zu erstellen, ob über die Plugin- oder Themeschnittstelle eingebunden, ist es von großem Nutzen, wenn man den Prozess kennt, den die Applikation beim Aufruf durchläuft. So lassen sich die entsprechenden Konstanten und Variablen gezielt nutzen.

In folgendem Bild ist der Prozess schematisch dargestellt. Darin ist die jeweils entscheidende Datei enthalten, die die Konstanten und Variablen enthält. Konstanten werden nach dem PHP-Coding-Standard in Großbuchstaben geschrieben, Variablen bekommen ein Dollarzeichen vorangestellt. Ebenso finden sich Hinweise auf entscheidende Funktionen und Hooks des jeweiligen Bereichs. Hooks erkennt man daran, dass sie über die Funktion „do_action()“ im Core hinterlegt sind.

Mit dem Aufruf des Blog-Headers werden alle notwendigen Prozesse ausgelöst.

Mit dem Aufruf des Blog-Headers werden alle notwendigen Prozesse ausgelöst.

Alternativ kann mit Hilfe der Variable „$wp_filter“ an allen Bereichen von WordPress das System ausgelesen werden und man erhält so einen Überblick, was, wo und wie geladen wird.

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

4 Kommentare
Crazy Girl

Ich habe in meiner WordPress Options Tabelle ziemlich viele Einträge für _transient_feed… _transient_feed_mod… _transient_timeout_feed… und _transient_timeout_feed_mod…
Zusammengerechnet dürfte da ein paar Hundert dabei rauskommen.
Kann ich die, evtl. bis auf den jeweils neuesten Eintrag, einfach löschen?

Florian Endres
Florian Endres

@Crazy Girl:

Der Autor ist momentan leider nicht erreichbar, deshalb habe ich unsere Techniker gefragt. Die Einträge stammen von der Transient API und können ignoriert werden. Das ist ein temporärer Cache, der irgendwann verfällt. Du kannst sie wohl auch löschen – sie tauchen aber erneut auf.

Crazy Girl

Vielen Dank für Deine Antwort. Ja, sie stammen von der Transient API und da ich so einige Feeds über meine Blogroll hole erhalte ich pro Feed 4 solche Einträge. Eigentlich sollten sie sich auch selbst wieder löschen, was sie aber nur hin und wieder tun und so schwillt die Options Tabelle auch recht unnett an. Deshalb habe ich mich die Tage entschieden – nach vorheriger Datensicherung – sie einfach mal zu löschen und zu kucken was passiert. Alles paletti. Sie legen sich zwar wieder an, wie Du geschrieben hast, aber es schadet auch nicht sie hin und wieder komplett rauszulöschen, um nicht gar so viele davon anzusammeln.
Vielleicht hilft diese Info ja auch jemanden, der in Zukunft hier vorbei kommt. Aber bitte vor dem Löschen immer eine Datensicherung machen, so dass im Notfall einfach nur wieder die Tabelle zurückgespielt werden kann. Man kann ja nie wissen ;-)

Frank

Sorry, bin nicht immer online und danke vielmals den Technikern – ja, diese neue Möglichkeit gibt es seit 2.8 und sollte vom User nicht angefasst werden (In der Regel macht das nix, sie werden neu erzeugt). Die Transient-Funktion lässt temporäre Daten in der DB zu, wobei sich der Bestand je nach Definition entfernt, WP kümmert sich darum.