Ein Hook ist ein vorgesehener Punkt im Ablauf eines Systems, an dem eigener Code zusätzlich ausgeführt wird. Das englische Wort heißt Haken: Man hängt sich an einer vorbereiteten Stelle ein, statt den Ablauf selbst zu verändern.
- Hook (CMS)
Ein vorgesehener Punkt im Ablauf, an dem eigener Code zusätzlich ausgeführt wird.
Beispiel: „Über einen Hook wird nach jeder Veröffentlichung eine Benachrichtigung verschickt.“Zwei Arten: Aktionen laufen an einer Stelle zusätzlich ab, Filter verändern einen Wert, bevor er weiterverwendet wird.
Grundlage der meisten Plugins; ohne Einhängepunkte bliebe nur, den Kern zu ändern.
Warum Hooks besser sind als Änderungen am Kern
Weil sie das nächste Update überleben. Wer eine Datei des Systems ändert, verliert die Änderung beim Aktualisieren oder blockiert das Update, weil die geänderte Datei nicht überschrieben werden darf.
Code, der an einem Einhängepunkt hängt, bleibt davon unberührt, solange der Punkt bestehen bleibt. Verschwindet er doch einmal, fällt das beim Update auf, und zwar an einer benannten Stelle statt irgendwo im Verhalten der Website.
Wo Hooks zum Problem werden
Bei der Reihenfolge. Wenn sich mehrere Erweiterungen an denselben Punkt hängen, entscheidet ihre Abarbeitungsfolge über das Ergebnis, und die ist nicht immer offensichtlich. Zwei Plugins, die beide den Seitentitel ändern, liefern je nach Reihenfolge verschiedene Titel.
Die Systeme lösen das über eine Priorität, die beim Einhängen mitgegeben wird. Wer sie nicht setzt, bekommt den Standardwert und damit eine Reihenfolge, die von der Ladefolge abhängt und sich bei der nächsten Installation ändern kann.
Was bei eigenen Hooks zu bedenken ist
Dass sie Teil einer Schnittstelle werden. Sobald eine eigene Erweiterung Einhängepunkte anbietet, hängt fremder Code daran, und ein Umbau bricht ihn.
Deshalb lohnt es sich, sparsam damit zu sein und die angebotenen Punkte zu dokumentieren: was übergeben wird, was zurückerwartet wird und an welcher Stelle des Ablaufs es passiert.