t3n 16

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

4 Reaktionen
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.

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 ;-)

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

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?

Du musst angemeldet sein, um einen Kommentar schreiben zu können.

Jetzt anmelden

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung