WordPress Hooks: Leitfaden für Anfänger zum Hinzufügen eigener Hooks

WordPress Hooks: Leitfaden für Anfänger zum Hinzufügen eigener Hooks

WordPress Hooks: Leitfaden für Anfänger zum Hinzufügen eigener Hooks
СОДЕРЖАНИЕ
02 июня 2020

Plugins sind das Weg, um WordPress zu erweitern. Der Grund, warum es so einfach ist, WordPress zum Bieten zu bewegen, hat mit Hooks zu tun, die über den Quellcode verstreut sind.


Möchten Sie etwas tun, sobald ein Beitrag veröffentlicht wird? Möchten Sie die Auszugslänge ändern? Möchten Sie Ihre eigenen Seitenaufrufstatistiken erstellen? Sie müssen nur den richtigen Haken finden.

Aber was ist mit Plugins? Hooks sind nicht nur für die Verwendung in WordPress gedacht, sondern im Wesentlichen ein Entwurfsmuster, das Sie in Ihrer eigenen Arbeit implementieren können.

In diesem Artikel zeige ich Ihnen, wie Sie Ihre eigenen Hooks erstellen können, damit Sie oder andere problemlos auf Ihrer Arbeit aufbauen können.

Warum wir Haken brauchen

Schauen wir uns ein Beispiel aus der realen Welt an, um Ihnen zu zeigen, wie großartig Hooks sein können: Erweiterte benutzerdefinierte Felder. Mit diesem Plugin können Sie Posts flexible benutzerdefinierte Datenfelder hinzufügen. Wir sprechen über Google Maps, Nummernfelder, Multiple Choice und mehr.

All dies geschieht über eine schöne Benutzeroberfläche. Sie müssen lediglich Funktionen wie get_field () oder the_field () am Frontend verwenden. So weit, ist es gut.

Nehmen wir an, Sie erstellen ein Tool, mit dem Menschen Dinge verkaufen können, und bieten ein Feld für den Preis und eines für die Währung an. Intern möchten Sie die Preise jedoch immer in Dollar speichern, unabhängig davon, in welcher Währung der Benutzer sie anzeigen möchte.

Wenn ACF (Advanced Custom Fields) keine Hooks hat, ist dies schwierig. Möglicherweise müssen Sie einen Mechanismus außerhalb von ACF verwenden, um dieses Feld zu speichern. Zum Glück sind wir von der acf / save_post Aktion. Mit dieser Aktion können Sie $ _POST-Daten ändern, bevor sie gespeichert werden – ein perfekter Zeitpunkt, um den Preis in Dollar umzurechnen.

Dies ist ein sehr praktisches Beispiel für Haken, aber es gibt noch einen anderen Grund: Zukunftssicherheit und Erweiterbarkeit. Hooks sind wie eine API, sie geben Ihnen die Richtung vor. sozusagen ein rahmen. Wenn Sie wichtige Daten speichern, sollten Sie automatisch einen Hook erstellen, damit andere die Daten bei Bedarf bearbeiten können. Wenn Sie etwas anzeigen, das für Ihre Anwendung kritisch ist, z. B. Bilder, verwenden Sie einen Filter, mit dem Sie die Anzahl der angezeigten Bilder definieren können.

Wie Hooks intern funktionieren

Um unsere eigenen Hooks zu erstellen, machen wir genau das, was WordPress intern macht – verwenden Sie die Funktionen do_action () und apply_filters (), um alle Hook-Funktionen auszuführen. Wenden wir uns dem WordPress-Quellcode zu, um zu sehen, wie diese funktionieren.

WordPress verwendet die Funktion wp_trim_excerpt () intern, um einen Auszug zu erstellen. In WordPress 4.1 ist diese Funktion in wp-includes / formatting.php ab Zeile 2542 definiert. Wenn Sie Ihre Aufmerksamkeit auf Zeile 2560 richten, sollten Sie Folgendes sehen:

$ excerpt_length = apply_filters (‘excerpt_length’, 55);

Dies bedeutet Folgendes: Führen Sie jede Funktion aus, die in die Hooks excerpt_length eingebunden ist, und geben Sie den Endwert zurück. Angenommen, Sie verwenden 3 Plugins, die die Länge des Auszugs ändern. Was passiert dann? Lassen Sie uns diese Funktionen an einem Ort zusammenfassen und einen Blick darauf werfen:

add_filter (‘excerpt_length’, ‘plugin_a_excerpt_modify’, 20);
plugin_a_excerpt_modify ($ length) {
return $ length – 10;
}}

add_filter (‘excerpt_length’, ‘plugin_b_excerpt_modify’, 32);
plugin_b_excerpt_modify ($ length) {
return 104;
}}

add_filter (‘excerpt_length’, ‘plugin_c_excerpt_modify’, 16);
plugin_c_excerpt_modify ($ length) {
return 20;
}}

Am Ende wird der Auszug 104 Wörter lang sein. Filter werden in ihrer Prioritätsreihenfolge ausgeführt. Daher wird zuerst die Funktion von Plugin C ausgeführt. Wenn keine andere Funktion angeschlossen wäre, würde die Länge jetzt 20 Wörter betragen. Als nächstes wird Plugin A aktiviert und die Länge wird 10. Schließlich wiegt Plugin B ein und ergibt die Länge 104.

do_action () verwendet genau denselben Mechanismus und führt alle Funktionen aus, die an den als ersten Parameter definierten Hook gebunden sind.

Beachten Sie, dass dieses Muster vollständig eingeschlossen ist und keine speziellen Definitionen erfordert. Sie können do_action (‘lol_hook’) überall verwenden, im schlimmsten Fall sind keine Funktionen an lol_hook gebunden. Mit anderen Worten, wir haben bereits die Infrastruktur, um unsere eigenen Hooks zu erstellen!

Eigene Haken erstellen

Wie oben erwähnt, müssen wir nur do_action () und / oder add_filter verwenden und sicherstellen, dass dokumentieren Sie es. Auf diese Weise wissen Codierer und Benutzer tatsächlich, dass es dort ist.

Nehmen wir an, wir erstellen eine Galerie der neuesten hochgeladenen Bilder, die direkt aus der Datenbank abgerufen wurden.

$ args = array (
‘post_type’ => ‘Anhang’,
‘post_status’ => ‘irgendein’,
‘orderby’ => ‘Datum’,
‘order’ => ‘DESC’,
‘posts_per_page’ => 10,
‘Felder’ => ‘ids’
);
$ images = new WP_Query ($ args);
$ gallery = ‘[‘ .’gallery ids ="’. implodieren (‘,’, $ images). ‘"’.’] ‘;
echo do_shortcode ($ gallery);

In diesem Beispiel erstellen wir eine Abfrage, um sicherzustellen, dass nur Bilder abgerufen werden, die nach Datum sortiert und auf 10 Ergebnisse beschränkt sind. Mit dem Parameter fields habe ich sichergestellt, dass ein Array von IDs zurückgegeben wird. Aus diesen Informationen habe ich dann einen regulären WordPress-Galerie-Shortcode erstellt.

Es gibt zwei Ansätze, um hier Haken hinzuzufügen. Sie können es einfach vor der Definition des $ args-Arrays wie folgt hinzufügen:

$ posts_per_page = apply_filters (‘my_gallery / posts_per_page’, 10);

In diesem Fall müssten Sie die Variable $ posts_per_page im Array verwenden. Vielleicht wäre eine bessere Lösung, das gesamte Array modifizieren zu lassen. Auf diese Weise können andere Plugins (oder Sie in Zukunft) Kategorien, Tags und andere Einschränkungen für die Galerien hinzufügen. Hier ist der vollständige Code:

$ args = array (
‘post_type’ => ‘Anhang’,
‘post_status’ => ‘irgendein’,
‘orderby’ => ‘Datum’,
‘order’ => ‘DESC’,
‘posts_per_page’ => 10,
‘Felder’ => ‘ids’
);

$ args = apply_filters (‘my_gallery / query_args’, $ args);

$ images = new WP_Query ($ args);
$ gallery = ‘[‘ .’gallery ids ="’. implodieren (‘,’, $ images). ‘"’.’] ‘;
echo do_shortcode ($ gallery);

Das ist alles dazu. Andere Plugins können jetzt den Hook my_gallery / query_args verwenden, um die Funktionalität der erstellten Galerien zu ändern.

Ein Hinweis zur Benennung: Der Schrägstrich ist überhaupt nicht erforderlich. Sie können “my_plugin_query_args” oder ein beliebiges anderes Format verwenden. Ich bevorzuge den Schrägstrich, da er das Plugin, das ihn erstellt, und die darin enthaltenen Funktionen klar angibt.

Fazit

Hooks sind extrem leistungsfähig und können nicht nur zum Erweitern von WordPress verwendet werden, sondern auch zum Erweitern Ihrer eigenen Plugins oder sogar Themes. Sie sollten darauf achten, nicht über Bord zu gehen und Haken in jede Ecke Ihrer Anwendung zu setzen.

Anstatt der Bestellung, dem Post-Status, dem Post_type und der Posts_per_page separat einen Hook hinzuzufügen, habe ich einen Filter hinzugefügt, mit dem das gesamte Array auf einmal geändert werden kann. Andere Datenbits sind möglicherweise nicht sinnvoll, um Hooks hinzuzufügen. Dies liegt letztendlich bei Ihnen.

Viel Glück beim Erstellen modularer und erweiterbarer Anwendungen. Lassen Sie uns wissen, ob Sie Ihre eigenen Hooks an einem coolen Ort verwendet haben!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Это интересно
    Adblock
    detector