Hooks: Filter und Aktionen. Ausführliche Anleitung. WordPress-Initialisierungs-Hooks: Vorteile und häufige Fehler

Was sind Haken? In einfachen Worten Hooks sind WordPress-Funktionen, an die Sie Ihre Funktionen binden können. Übersetzt aus dem Englischen ist Hook ein Haken, Sie sind also sozusagen an eine Standardfunktion gebunden. An die Funktion zum Löschen eines Beitrags binden wir beispielsweise unsere Funktion, die erst beim Löschen des Beitrags ausgelöst wird. Mit dem richtigen Einsatz von Hooks können Sie die Grundfunktionalität von WordPress deutlich erweitern.

Ich zeige Ihnen an einem kleinen Beispiel, wie Sie WordPress-Hooks verwenden können. Nehmen wir den Post-Publishing-Hook als Grundlage. veröffentlichen_post, und erstellen Sie eine Funktion dafür, die dem Benutzer Punkte zum Hinzufügen von Beiträgen hinzufügt.

Wie benutzt man einen Haken

Hooks werden entweder in Plugins oder in der functions.php verwendet. Um den Hook aufzurufen, müssen Sie schreiben:

Add_action ("publish_post", "add_point");

add_point - Der Name der Funktion, die Sie erstellen.

Beispiel für Hook-Funktion

In meinem Fall funktioniert die Funktion so:

Der Benutzer fügt einen Eintrag hinzu, ein Hook wird ausgelöst, der die Funktion aufruft, in der die ganze Magie passiert 🙂 In der Funktion arbeite ich mit der Klasse $ wpdb-> aktualisieren, wo ich die Tabelle mit den Ergebnissen eines bestimmten Benutzers aktualisiere. In der Lektion habe ich über die Klasse gesprochen $ wpdb-> einfügen basierend darauf können Sie Ihre Funktion mit $ wpdb-> aktualisieren, Diese Klasse funktioniert ähnlich.

So sieht eine Hakenkonstruktion grob aus:

Funktion add_point () (// Funktion hier) add_action ("publish_post", "add_point");

Alles innerhalb der Funktion wird ausgelöst, wenn der Beitrag veröffentlicht wird. Sie können jeden anderen Hook verwenden, der auf Ihrer WordPress-Site verfügbar ist.

Hier ist die Funktion zum Aktualisieren der Scores:

Funktion add_point () (global $ wpdb; $ user_ID = get_current_user_id (); $ result = $ wpdb-> get_results ("SELECT points FROM user_points WHERE user =" ". $ User_ID." ""); $ Update = $ result- > Punkte + 10; $ wpdb-> update ("user_points", array ("points" => $ update,), array ("user" => $ user_ID), array ("% d",), array (" % d "));) add_action ("publish_post", "add_point");

Diese Funktion ist noch nicht fertig, ich habe sie der Übersichtlichkeit halber gezeigt, damit klar ist, wie man mit Hooks und Funktionen arbeiten kann.

Wenn Sie neu bei Hooks sind, hilft Ihnen dieser Artikel. Die im Artikel aufgeführten Beispiele stammen aus dem WordPress-Kern, sowie aus unserer langjährigen eigenen Erfahrung als Plugin-Entwickler.


WordPress-Hooks sind eine Funktion, mit der Sie die Funktionen von Plugins und Themes erweitern können, ohne sie zu beschädigen.

Was sind Haken?

Der "do"-Hook heißt "action". Wo immer eine Aktion definiert ist, können Sie Ihren eigenen Code ausführen. Hier sind einige Beispiele:

  • senden Email an den Autor nach Veröffentlichung des Beitrags;
  • benutzerdefiniertes Skript in der Seitenfußzeile laden;
  • fügen Sie Anweisungen über dem Anmeldeformular hinzu.

Der Anpassungs-Hook wird als Filter bezeichnet. Mit dem Filter können Sie den Wert ändern oder anpassen und in einem neuen Formular zurückgeben. Hier sind einige Beispiele:

  • Ausgabe von Posttiteln in Großbuchstaben;
  • Anhängen eines Links zu verwandten Beiträgen unterhalb des Hauptinhalts;
  • Ändern eines Parameters, der aus der Datenbank abgerufen wird.

Für den Filter ist nicht nur die Position wichtig, sondern auch die Rückgabewerte. WordPress hat für fast jeden Wert, den es verarbeitet, einen Filter.

Hook-Prozedur-Elemente

Lassen Sie uns den wp_head-Hook als Beispiel für eine Aktion und den_content-Hook als Beispiel für einen Filter verwenden.

Haken (Substantiv)

Der Haken selbst ist ein Hinweis darauf, wann und wo die Magie passiert. Stellen Sie sich vor, dies ist ein Haken, den ein Kletterer in die Oberfläche eines Felsens gehämmert hat. Der Haken hat eine bestimmte Position. Wenn sich andere Kletterer in diese Richtung bewegen wollen, können sie es nutzen.
Action-Hooks werden mit der Funktion do_action aufgerufen:

do_action ("wp_head");

Hooks werden mit apply_filters() aufgerufen:

$ content = apply_filters ("the_content", $ content);

Wie Sie sehen, müssen wir Daten aus dem Filter abfangen.

Aktionen und Filter

Das nächste Element in der Hook-Prozedur ist eine Aktion oder ein Filter. Es ist eine Funktion, die Sie definieren, um etwas zu tun oder zu filtern. Dies ist ein Kletterer, der bereit ist, jeden Enterhaken zu verwenden, um etwas höher zu klettern.
Die in wp_head ausgeführte Aktion ist noindex().

functionnoindex () (// Wenn der Blog nicht öffentlich ist, sagen Sie den Robotern, dass sie vorbeigehen sollen. if ("0" == get_option ("blog_public")) wp_no_robots ();)

Der Hook prüft, ob die Sichtbarkeitseinstellung für Suchmaschinen deaktiviert ist. Wenn ja, fügt wp_no_robots() die Meta hinzu Roboter-Tag anzeigen Suchmaschinen Indexieren Sie die Site nicht.
Ein Beispiel für einen Filter für the_content ist wpautop(). Er ist dafür verantwortlich, Absätze in das Tag einzuschließen

Und mit dem Tag
für Zeilenumbrüche.

functionwpautop ($ pinkeln, $ br = true) (//… return $ pinkeln;)

Im Gegensatz zu einer Aktion erfordert eine Filterfunktion mindestens ein Argument. Es muss zurückgegeben werden.

Haken (Verb)

In der WordPress-Hook-Prozedur müssen Sie angeben, wofür der Hook gedacht ist. Das bedeutet, dass wir eine Funktion (Verb) an einen Haken (Substantiv) binden müssen. Dies geschieht mit einer Funktion, die oft fälschlicherweise als Hook bezeichnet wird.
Für den Hook wp_head und die Aktion noindex() wird die Kommunikation mit dieser Codezeile hergestellt:

add_action ("wp_head", "noindex", 1);

Der dritte Parameter ist Priorität. Wir werden es unten behandeln.
Das Aktivieren von wpautop() in the_content erfolgt mit dieser Zeile:

add_filter ("the_content", "wpautop");

Dies sind die Grundprinzipien des Hook-Verfahrens. Diese werden wir uns in den folgenden Abschnitten genauer ansehen.

Sie verwenden diese Haken bereits

Auch wenn Sie „nur“ das Theme ändern oder Code zu Ihrer Datei functions.php hinzufügen, verwenden Sie bereits Aktionen und Filter.

WP_HEAD

Betrachten Sie den Abschnitt mit der Kopfzeile des Themas Twenty Fifteen in der Datei wp-content / themen / zwanzigfünfzehn / header.php.

class = "no-js"> "> ">

Zwischen öffnenden und schließenden Tags Es wird nicht viel Code gehostet, aber sehen Sie sich den Quellcode der Seite in einem Browser an. Sie sehen dort verschiedene Metaelemente, einschließlich des Tags .<br>Elemente, die möglicherweise nicht in der Datei header.php vorhanden sind, werden mit der Funktion wp_head() hinzugefügt. Wenn Sie eine Entwicklungsumgebung verwenden, zeigen Sie deren Inhalt an.</p> <p>/ ** * Aktion wp_head starten * * @since 1.2.0 * / functionwp_head() (/ ** * Skript oder Daten im Head-Tag über das Frontend ausgeben. * * @Seit 1.5.0 * / do_action ("wp_head" );)</p> <p>Das einzige, was wp_head() tut, ist den wp_head-Hook auszugeben. Das bedeutet, dass ein Theme do_action (‘wp_head’) anstelle von wp_head() verwenden kann. <br>Dieser Hook wird bereits vom Kernel verwendet. Hier sind einige der Aktionen, die WordPress standardmäßig mit diesem Hook verbindet:</p> <p>add_action ("wp_head", "_wp_render_title_tag", 1); add_action ("wp_head", "wp_enqueue_scripts", 1); add_action ("wp_head", "feed_links", 2); add_action ("wp_head", "feed_links_extra", 3); add_action ("wp_head", "rsd_link"); add_action ("wp_head", "wlwmanifest_link"); add_action ("wp_head", "adjacent_posts_rel_link_wp_head", 10.0); add_action ("wp_head", "locale_stylesheet"); add_action ("wp_head", "noindex", 1); add_action ("wp_head", "print_emoji_detection_script", 7); add_action ("wp_head", "wp_print_styles", 8); add_action ("wp_head", "wp_print_head_scripts", 9); add_action ("wp_head", "wp_generator"); add_action ("wp_head", "rel_canonical"); add_action ("wp_head", "wp_shortlink_wp_head", 10,0); add_action ("wp_head", "wp_site_icon", 99);</p> <p>Dazu gehören die Aktion noindex() und (seit WordPress 4.1) der Aufruf _wp_render_title_tag(), der das Title-Tag generiert.</p> <h2>Inhalt</h2> <p>Ein Beispiel für einen Filter-Hook, den Sie verwendet haben, ohne ihn zu kennen, ist the_content. <br>Es ist hinter der Funktion_content() versteckt, die verwendet wird, um den Inhalt eines Beitrags oder einer Seite anzuzeigen. Es enthält einen Aufruf des Hooks the_content.</p> <p>functionthe_content ($ more_link_text = null, $ strip_teaser = false) ($ content = get_the_content ($ more_link_text, $ strip_teaser); //… $ content = apply_filters ("the_content", $ content); $ content = str_replace ("]]> ","]]> ", $ Inhalt); echo $ Inhalt;)</p> <p>Standardmäßig sind bereits mehrere Filter mit der Funktion_content verbunden.</p> <p>add_filter ("the_content", "wptexturize"); add_filter ("the_content", "convert_smilies"); add_filter ("the_content", "convert_chars"); add_filter ("the_content", "wpautop"); add_filter ("the_content", "shortcode_unautop"); add_filter ("the_content", "prepend_attachment");</p> <p>Diese Filter sind für das Format und den Bereich verantwortlich. <a href="https://comuedu.ru/de/different/how-to-use-fax-detailed-instructions-delete-the-phonebook.html">spezielle Charaktere</a> im Text. Sie werden auch häufig von Plugins zum Anhängen von Elementen wie Symbolen verwendet <a href="https://comuedu.ru/de/android/vseti-by-socialnaya-set-belarusi-moya-stranica-pervyi-reiting-socialnyh.html">soziale Netzwerke</a> oder verwandte Aufzeichnungen.</p> <h2>Tutorials zur Verwendung von the_content</h2> <p>Hier sind zwei Beispiele dafür, wie der Missbrauch eines Hooks dazu führen kann, dass eine Funktion fehlschlägt. <br>Der Rumpf der Funktion the_content() enthält auch einen Aufruf von get_the_content(). Ich habe gesehen, dass der zweite anstelle des ersten in mehreren Themen verwendet wurde. Auf diese Weise wird jedoch der Hook selbst deaktiviert und viele Funktionen funktionieren nicht. <br>Wenn Sie eine Verbindung zu the_content herstellen, denken Sie daran, dass es nicht nur auf Inhaltsseiten, sondern auch auf Listenseiten verwendet wird. Zum Beispiel in den Archiven sowie auf der Homepage.</p> <h2>Hook-Prozedur-Parameter</h2> <p>Die wichtigsten Parameter, die benötigt werden, sind der Name des Hooks, der Name der Funktion, die Priorität und die übergebenen Argumente. <br>So sieht der add_filter-Aufruf aus:</p> <p>add_filter ($-Tag, $-Funktion, $-Priorität, $ akzeptierte_Args);</p> <h2>Hook-Namen ($ teg)</h2> <p>Sie können nichts mit Hook-Namen tun, die in WordPress-Kern, Plugins oder Themes verwendet werden. Es gibt jedoch einige Grundsätze, die Sie befolgen müssen, wenn Sie Ihre eigenen Namen festlegen. <br>Der Name der Aktion muss den Speicherort, den Filterspeicherort und den zu ändernden Wert enthalten. <br>Beispiele für Aktionen sind wp_head und wp_footer, die nach ihrer Position benannt sind. Auch Präfixe oder Suffixe werden häufig verwendet. Zum Beispiel: Vorher, Vorher, Beginn, Nachher und Ende.</p> <p>Die Funktion wp_delete_post(), die für das Löschen eines Beitrags zuständig ist, enthält die folgenden Hooks:</p> <ul><li>vor_löschen_post;</li> <li>Beitrag löschen;</li> <li>gelöschter_post;</li> <li>after_delete_post.</li> </ul><h2>Hook-Namenspräfixe</h2> <p>Zusätzlich zu Position und Wert müssen Sie das Präfix Hook-Präfix angeben. Zum Beispiel:</p> <ul><li>wpseo_ von Yoast SEO</li> <li>genesis_ aus dem Genesis-Framework;</li> <li>advanced_ads_ von meinem Advanced Ads-Plugin.</li> </ul><p>Dies verhindert Konflikte mit Hooks in anderen Plugins oder Skins.</p> <h2>Dynamische Hook-Namen</h2> <p>Nehmen wir an, es gibt viele Parameter in einem Plugin und Sie möchten, dass andere Entwickler für jeden einen Filter verwenden können. Dazu müssen Sie apply_filters() für jeden Parameter aufrufen. Sie können auch einen dynamischen Hook-Namen wie WordPress in der Funktion get_options() verwenden.</p> <p>Diese Funktion umfasst die folgenden Hooks:</p> <ul><li>„Vor_Option_“. $-Option;</li> <li>'Standardoption_'. $-Option;</li> <li>'Möglichkeit_'. $-Option.</li> </ul><p>Wenn Sie dies wissen, sollten Sie sich in option_blogname oder option_blogdescription einklinken, um Ihren Blogtitel oder Ihre Blogbeschreibung dynamisch zu ändern.</p> <h2>Magie "alles"</h2> <p>Beim Aufruf von add_action() und add_filter() können Sie ein spezielles Tag als Hook-Namen verwenden. Dadurch wird sichergestellt, dass die verknüpfte Funktion für jeden Hook verwendet wird.</p> <h2>Funktionsnamen</h2> <p>Fügen Sie beim Aufrufen einer einfachen Funktion ein Präfix hinzu. Dies verhindert Konflikte mit anderen Hilfsfunktionen, die es identifizieren. <br>Funktionsnamen, die mit my_ beginnen, finden Sie in den Foren. Ändern Sie dieses Präfix in Ihr eigenes.</p> <p>add_filter ("the_content", "bestpluginever_capitalize_all_words");</p> <p>Es ist auch möglich, eine statische Funktion in einer Klasse zu verbinden:</p> <p>add_filter ("the_content", array ("bestpluginever", "capitalize_all_words"));</p> <p>Der Aufruf für eine Instanz dieser Klasse sieht so aus:</p> <p>add_filter ("the_content", Array ($ bestpluginever, "capitalize_all_words"));</p> <p>Sie können auch eine Methode für eine Instanz derselben Klasse aufrufen, zum Beispiel:</p> <p>add_filter ("the_content", array ($ this, "capitalize_all_words"));</p> <p>Stellen Sie außerdem sicher, dass die Funktionen öffentlich sind.</p> <h2>Standard-PHP-Funktionen verwenden</h2> <p>V <a href="https://comuedu.ru/de/apple/vibraciya-vibro-na-iphone-kak-otklyuchat-ili-vklyuchat-v-opredelennyh-sluchayah-kak.html">bestimmte Fälle</a> Sie müssen keine eigene Funktion erstellen. Diese Hook-Prozedur schreibt jeden ersten Buchstaben des Beitragstitels groß:</p> <p>functionbestpluginever_capitalize_title ($ title) (returnucwords ($ title);) add_filter ("the_title", "bestpluginever_capitalize_title");</p> <p>Da ucwords() eine Standard-PHP-Funktion ist, die einen Wert akzeptiert und zurückgibt, kann sie auf eine Zeile abgekürzt werden:</p> <p>add_filter ("the_title", "ucwords");</p> <h2>Prioritäten</h2> <p>Der dritte Parameter von add_action() und add_filter() ist die Priorität. Es legt die Reihenfolge fest, in der die Hook-bezogenen Funktionen aufgerufen werden. <br>Dieser Parameter ist optional und hat den Standardwert 10, wenn er nicht explizit definiert ist. Mehrere Funktionen mit gleicher Priorität werden in der Reihenfolge aufgerufen, in der sie im Hook registriert wurden. <br>Das Advanced Ads-Plugin verwendet the_content beim Einfügen von Anzeigen vor oder nach Inhalten. Sein dritter Parameter bestimmt, ob zuerst eine Anzeige oder andere Inhalte eingefügt werden. Um Support-Anrufe wegen der "falschen" Reihenfolge der Elemente zu vermeiden, habe ich den Benutzern die Möglichkeit gegeben, optional eine Filterpriorität auszuwählen.</p> <h2>Den Fortschritt einer Aktion überprüfen</h2> <p>Did_action() kann verwendet werden, um zu überprüfen, ob eine bestimmte Aktion stattgefunden hat. <br>Die Funktion _wp_render_title_tag wurde an wp_head angeschlossen. Dies ist ein Beispiel dafür, wie die Wordpress-Engine überprüft, ob das Title-Tag wirklich nur hier erstellt wird.</p> <p>function_wp_render_title_tag () (if (! current_theme_supports ("title-tag")) (return;) // Dies kann nur innerhalb von wp_head funktionieren. if (! did_action ("wp_head") &&! doing_action ("wp_head")) (return; ) Echo" <title>".wp_title (" | ", falsch," richtig ")." n ";)

did_action ($-Hook) gibt Informationen darüber zurück, wie oft die Aktion ausgeführt wurde, einschließlich des aktuellen Aufrufs. Die Funktion gibt 1 zurück, wenn _wp_render_title_tag() in wp_head ausgeführt wird. do_action (‘wp_head‘) prüft, ob wir uns gerade in der wp_head-Aktion befinden. Tatsächlich ist der obige Code eine doppelte Überprüfung. Aus diesem Grund wird es aus WordPress 4.4.0 entfernt.
Die Funktion do_action() prüft, ob tatsächlich eine Aktion stattfindet.

Filternutzung prüfen

Es gibt keine Aliase für did_action()- und do_action()-Filter. Verwenden Sie stattdessen has_filter ($-Hook, $-Funktion). Wenn nur $ Hook angegeben wird, wird true zurückgegeben, wenn eine Funktion beim Hook registriert ist. Sonst falsch.
Wenn auch die Funktion $-Funktion übergeben wird, wird die Priorität dieser Funktion zurückgegeben, oder false, wenn diese Funktion nicht angeschlossen ist.
Beim Hinzufügen von Werbung nach einem bestimmten Absatz muss das Advanced Ads-Plugin sicherstellen, dass wpautop() aufgerufen wird, bevor die benutzerdefinierte Filterfunktion angewendet wird.

$ wpautop_priority = has_filter ("the_content", "wpautop"); if ($ wpautop_priority && $ advads_content_injection_priority ()<$wpautop_priority){ $content=wpautop($content); }

Mit diesem Code-Snippet überprüfe ich, ob die Priorität von wpautop() höher ist als die Priorität der Funktion zum Aktivieren von Anzeigen. Es stellt sich heraus, dass die Absätze noch nicht festgelegt wurden, und dies weist das Plugin an, sie zuerst zu erstellen.

Argumente

Betrachten Sie den Hook delete_term, der ausgeführt wird, nachdem ein Begriff aus der Datenbank gelöscht wurde.

do_action ("delete_term", $ term, $ tt_id, $ taxonomy, $ delete_term);

Bei Verwendung der Funktion add_action() oder add_filter() ist der vierte Parameter die Anzahl der Argumente, die die Aktions- oder Filterfunktion erwartet.
In unserem Fall kann die Hook-Funktion diese vier Argumente verwenden. Aber das ist optional. Dies wird durch die im Kernel implementierte Beziehung bestätigt:

add_action ("delete_term", "_ wp_delete_tax_menu_item", 10.3);

Die Aktion verwendet nur die ersten drei Argumente, nicht $ delete_term.

function_wp_delete_tax_menu_item ($ object_id = 0, $ tt_id, $ taxonomy) (// ...)

Schwierigkeiten mit der Anzahl der Argumente

Die Anzahl der angegebenen Argumente muss mit der Nummer übereinstimmen, die die Funktion verwendet. Diese Regel ist jedoch optional, wenn keine oder nur ein Argument vorhanden ist.
Wenn die Funktion mehr Argumente benötigt, müssen Sie diese setzen, ansonsten erhalten Sie eine Fehlermeldung. Wenn Sie sie installiert haben, müssen Sie auch die Priorität festlegen, die in vielen Fällen optional ist.

Aktionen und Filter entfernen

Das Entfernen einer Aktion oder eines Filters von einem Hook ist nicht ungewöhnlich. Ein beliebtes Beispiel war das Entfernen von Emojis aus WordPress 4.2.
Das gesamte Plugin zum Deaktivieren von Emojis kann auf den folgenden Code reduziert werden:

functiondisable_emojis () (remove_action ("wp_head", "print_emoji_detection_script", 7); remove_action ("admin_print_scripts", "print_emoji_detection_script"); remove_action ("wp_print_styles", "print_eles"); remove_filter ("the_content_ize", "wp_static); remove_filter ("comment_text_rss", "wp_staticize_emoji"); remove_filter ("wp_mail", "wp_staticize_emoji_for_email");), add_action

Es gibt auch Plugins, die die Funktion wpautop() deaktivieren. Dies kann mit nur einer Codezeile in Ihrer Datei functions.php erfolgen.

remove_filter ("the_content", "wpautop");

Die Funktionen remove_action() und remove_filter() benötigen drei Argumente:

  • Funktion;
  • Eine Priorität.

Sie müssen alle mit den Werten von add_action() und add_filter() übereinstimmen. Die Schwierigkeit besteht darin, dass der Haken nur entfernt wird, wenn er bereits hinzugefügt wurde.

Wie finde ich den Haken?

Um einen Hook zu finden, müssen Sie nur wissen, was Sie ändern oder hinzufügen möchten. Um zu beginnen, können Sie einfach die Funktionen untersuchen, die im aktuellen Code bereits verwendet werden.
Eine weitere Ressource, die verwendet werden kann, ist die Plugin-API-Seite. Es listet wichtige Funktionen und andere nützliche Informationen auf.

Debugging-Hooks

Um Hooks zu debuggen, erstellen Sie eine Liste aller verbundenen Aktionen und Filter.

Verwenden von error_log()

Zum Debuggen von Filtern verwende ich lieber error_log() in Verbindung mit DEBUG_LOG. Dadurch wird die Ausgabe in die Datei debug.log geschrieben, aber nicht über das Frontend angezeigt.

functionexample_content_filter ($-Inhalt) ($-Option = get_option ("add_haha"); error_log ($-Option); if ($-Option === true) ($-Inhalt. = "HAHA
". $ Inhalt;) Rückgabe von $ Inhalt;) add_filter (" the_content "," example_content_filter ");

Im obigen Skript füge ich dem Inhalt die HAHA-Zeile hinzu. Aber nur, wenn der Parameter true zurückgibt. Wenn das nicht funktioniert, können Sie error_log (Option $) verwenden.

Verwenden der HOOK-API

Eine andere Möglichkeit, Hooks zu debuggen, besteht darin, die oben genannten Funktionen zu verwenden. Zum Beispiel doing_action() oder did_action().
Sie können dieser Liste auch current_filter() hinzufügen. Sie können es verwenden, um den Namen des aktuellen Hooks anzuzeigen:

functionmy_filter () (echocurrent_filter (); // "the_content") add_filter ("the_content", "my_filter");

Wenn Sie sehen möchten, wo dies im Kernel verwendet wird, werfen Sie einen Blick auf capital_P_dangit ()

Wird ausgelöst, bevor die ausgewählte Theme-Vorlagendatei verbunden ist, zum Beispiel: single.php, page.php, search.php, 404.php usw. Dieser Filter wird verwendet, um den Pfad zu einer solchen Datei zu ändern.

Der Filter wird nach dem template_redirect-Ereignis ausgelöst und nachdem WordPress die Datei ausgewählt hat, die als Vorlagendatei verwendet werden soll. Für jeden Seitentyp ist die Datei unterschiedlich: siehe Hierarchie der Designdateien. Zum Beispiel sind wir zu einer permanenten Seite gegangen, WordPress wählt aus, welche Vorlagendatei angezeigt werden soll - dies ist die Datei page.php: home / site.ru / wp-content / themes / mytheme / page.php. Mit diesem Filter können Sie den Pfad einer solchen Datei ändern.

Während dieses Filters können bereits bedingte Tags verwendet werden und die Variable $ post ist bereits definiert.

Verwendungszweck

add_filter ("template_include", "filter_function_name_11"); function filter_function_name_11 ($-Vorlage) (// Filter ... geben $-Vorlage zurück;) $-Vorlage (Leitung) Vollständiger Pfad zur Datei, die als Vorlage eingefügt wird. Bsp: home / wptest.ru / wp-content / themen / Herausgeber / page.php.

Beispiele von

# 1 Datei im Themenverzeichnis

Eine Vorlage für eine permanente Seite kann gesetzt werden, indem man eine Datei im Theme-Verzeichnis erstellt und am Anfang der Datei einen PHP-Kommentar angibt:

Wenn Sie dann eine Seite erstellen, müssen Sie in der Dropdown-Liste die erstellte Vorlage auswählen

# 2. Genau benannte Themendatei

Oder erstellen Sie im Theme eine page-portfolio.php-Datei. In diesem Fall muss die Seitenbezeichnung gleich "Portfolio" sein.

# 3. Template_include-Filter

Und die dritte Möglichkeit, eine separate Vorlagendatei für die Portfolio-Shortcut-Seite zu erstellen, besteht darin, den template_include-Filter zu verwenden:

Add_filter ("template_include", "portfolio_page_template", 99); function portfolio_page_template ($ template) (if (is_page ("portfolio")) (if ($ new_template =locate_template (array ("portfolio-page-template.php"))) $ template = $ new_template;) return $ template;)

Diese Methode kann nützlich sein, wenn Sie Plugins oder Add-Ons zu einer Vorlage schreiben. Wenn Sie nur eine Seite mit einem bestimmten Slug erstellen müssen und das war's.

#4 Einbinden von PHP-Funktionen als Template-Datei

Manchmal ist es praktisch, keine Datei mit dem Vorlagencode zu erstellen, sondern eine PHP-Funktion mit dem Code dieser Datei zu erstellen. Und damit eine solche Funktion als Datei funktioniert, kann sie im Hook template_include aufgerufen werden:

Üerschrift

Etwas Text

Muss es wissen!

Das ist technisch die falsche Lösung, aber es funktioniert! In diesem Fall wird der Filter als Ereignis verwendet. Und da dieser Filter als letzter unter den Filtern bezeichnet wird, die sich nicht auf die Vorlage beziehen, können Sie beim Aufrufen den von uns benötigten Vorlagencode anzeigen ...

# 5 So finden Sie heraus, welche Vorlagendatei gerade verwendet wird

Sehen Sie sich dazu an, was an den template_include-Filter übergeben wird:

## Welches Template wird gerade verwendet add_filter ("template_include", "echo_cur_tplfile", 99); Funktion echo_cur_tplfile ($-Vorlage) (echo " ". wp_basename ($-Vorlage).""; $ Vorlage zurückgeben;)

Einer der Eckpfeiler, um Dinge in WordPress zu erledigen, ist zu verstehen, wie Hooks funktionieren. Es ist an sich nicht schwierig, aber in diesem Artikel werden wir versuchen, Sie durch die Grundlagen zu führen.

Aber auch wenn Sie tieferes Wissen erlangen möchten, müssen Sie immer noch wissen, wie man Hooks verwendet.

Wir führen Sie durch das WordPress-Hook-System und seine Verwendung sowie Aktions- und Filter-Hooks.

Bevor Sie beginnen, stellen Sie sicher, dass Sie alles haben, was Sie für den Einstieg benötigen, und die neueste Version von WordPress installiert haben.

Was sind Haken?

Bevor wir uns WordPress-Hooks ansehen, ist es notwendig, die ereignisgesteuerte Entwicklungsarchitektur zu verstehen.

Wenn Sie mit bestehenden WordPress-Hooks, Front-End-Webentwicklung oder JavaScript gearbeitet haben, sind Sie wahrscheinlich mit dem Konzept vertraut, auch wenn Sie nicht wussten, dass es einen offiziellen Namen hat.

Ereignisgesteuerte Architektur(engl. event-driven architecture, EDA) ist ein Software-Architekturmuster, das die Erstellung, Definition, Nutzung und Reaktion auf Ereignisse ermöglicht.

Wenn Sie gerade erst mit Projektvorlagen oder der Entwicklung beginnen, mag Ihnen dies entmutigend erscheinen, aber es ist besser, es sich so vorzustellen:

  • Die Software kann Ihnen zu bestimmten Zeiten eine Nachricht über ein Ereignis senden.
  • Als Entwickler sind wir in der Lage, Code zu schreiben, der diese Nachrichten überwacht und dann mit benutzerdefiniertem Code antwortet.

Beachten Sie, dass es bei der Definition auch um das Erstellen von Ereignissen geht. Wenn wir unsere eigenen Hooks besprechen, werden wir auf dieses Thema zurückkommen. Werfen wir nun einen Blick auf zwei Ereignisse, die in der Webentwicklung üblich sind.

JavaScript verwenden

Stellen Sie sich vor, Sie arbeiten in der Frontend-Entwicklung. Sie haben eine Schaltfläche mit der Befehlsschaltfläche für das ID-Attribut, und wenn der Benutzer darauf klickt, sollte sich ein Dialogfeld öffnen.

Mit jQuery können Sie diese Funktionalität wie folgt implementieren:

(function ($) ("use strict"; // jQuery "s DOM-ready Event-Handler $ (function () (/ ** * Höre auf das" click "Ereignis auf der mit der" Befehlsschaltfläche * gekennzeichneten Schaltfläche "ID-Attribut. * * Wenn der Benutzer darauf klickt, wird ein Warndialog angezeigt. * / $ (" # Befehlsschaltfläche "). Binden (" klicken ", Funktion (evt) (Warnung (" Sie haben auf die Schaltfläche geklickt. " );));));)) (jQuery);

Die Kommentare im Code erklären, wie es funktioniert. Kurz gesagt, der Browser spielt ein Ereignis ab, wenn der Benutzer auf die Schaltfläche klickt. In diesem Fall lauscht unser Code auf Ereignisse und reagiert dann mit der Anzeige eines Dialogfelds.

Natürlich bieten auch andere Bibliotheken, Frameworks oder Vanilla-JavaScript den gleichen Funktionsumfang. Der Grund, warum wir über jQuery sprechen, ist, dass es eine der am häufigsten verwendeten JavaScript-Bibliotheken ist und mit WordPress verwandt ist.

Verwendung von WordPress

Die Anwendung dieses Musters unterscheidet sich je nach Programmiersprache oder Paradigma. Dies hängt oft von der API ab, die die Plattform oder Anwendung bereitstellt.

In WordPress ist die Registrierung Ihres eigenen Codes, der Ereignisse auslöst, etwas anders. Angenommen, Sie arbeiten mit einer Admin-Seite in WordPress und möchten ein neues Untermenüelement im Menü Einstellungen hinzufügen. Nennen wir es Tuts + Optionen.

Dazu fügen wir unserer Datei functions.php oder einem Plugin oder einer anderen Art von Projekt, mit dem wir arbeiten, den folgenden Code hinzu:

Sie können zu Codex gehen, um mehr über Hooks zu erfahren. admin_menu und Funktionen add_submenu_page.

Dieser Code fügt dem Menü keine neuen Funktionen hinzu, zeigt jedoch, dass WordPress das Ereignis admin_menu auf die gleiche Weise bereitstellt, wie der Browser Klickereignisse bereitstellt. Wir können dann unseren eigenen Code einfügen, indem wir eine Funktion definieren und sie ausführen, wenn ein Ereignis eintritt.

Dies sind zwei Beispiele für die Implementierung und Verwendung des ereignisgesteuerten Entwurfsmusters.

WordPress-Aktionen verstehen

Wir haben uns mit dem ereignisgesteuerten Entwicklungsmuster und zwei Arten von Musterimplementierungen befasst, aber jetzt werfen wir einen Blick auf die WordPress-Aktions-Hooks. Wir besprechen die verfügbaren Haken und deren Anwendung.

Einrichten unserer Datei

Für den Code in diesem Tutorial verwenden wir das Thema sechzehn von WordPress bereitgestellt.

Erstellen Sie eine Datei namens tutsplus-actions.php im Stammverzeichnis Ihres Theme-Verzeichnisses. Fügen Sie dann die folgenden Codezeilen in die functions.php ein:

Dies weist das Theme an, die von uns definierte Datei zu laden. Wir tun dies, um den Code nicht in den Kern des Themes einzuschleusen und den Code einfach zu entfernen, indem wir include_once entfernen.

Kurze Definition von Aktionen

Hooks in WordPress gibt es in zwei Varianten: Aktions- und Filter-Hooks. Mit Aktions-Hooks können Sie bestimmte Funktionen hinzufügen, entfernen oder ändern. Und Filter-Hooks sind für das Hinzufügen, Entfernen und Ändern von Informationen verantwortlich.

Kurz gesagt, Action-Hooks arbeiten mit Funktionalität, während Filter mit Informationen arbeiten.

Nachdem Sie weitere Informationen zu Aktions- und Filter-Hooks untersucht haben, finden Sie weitere unter dem allgemeinen Namen Hooks.

Obwohl dies technisch korrekt ist, ist es am besten, die Art des Hakens zu identifizieren, an dem Sie arbeiten.

Weil Action-Hooks einige der Dinge tun und Filter völlig anders sind.

Mit Aktionen arbeiten

Obwohl wir die Beispiele für Aktions-Hooks im obigen Code bereits behandelt haben, werfen wir einen Blick auf umfassendere und praktische Beispiele.

WordPress bietet zwei Arten von Beiträgen: Beiträge (für regelmäßige Blog-Beiträge) und Seiten (für dauerhafte Inhalte oder Inhalte, die sich nicht oft ändern). Für eine normale Blogging-Plattform reicht das. Aber WordPress hat sich längst zu einem CMS entwickelt.

Und eine der Funktionen, die WordPress erweiterbar macht, ist die Möglichkeit, benutzerdefinierte Beitragstypen zu präsentieren. WordPress nennt sie benutzerdefinierte Beitragstypen, und sie sind praktisch, wenn Sie einen Inhaltstyp erstellen müssen, der einen eigenen Attributtyp benötigt und nicht zum Namen "Beitrag" oder "Seite" passt.

Um unseren eigenen benutzerdefinierten Beitragstyp zu erstellen, müssen wir zwei Dinge tun:

  1. Definieren Sie eine Funktion, die sich an den Init-Hook klammert, wie in WordPress beschrieben
  2. Registrieren Sie unseren Beitragstyp mit einer der verfügbaren API-Funktionen

Registrierungsaktion

Um unseren Action-Hook zu registrieren, verwenden wir die Funktion add_action, die von der WordPress-API bereitgestellt wird. Dies teilt WordPress mit, dass wir einen Action-Hook einführen und dass es die Funktion ausführen muss, die durch den Namen angegeben wird, den wir im Funktionsaufruf angegeben haben.

Unser Code sollte so aussehen:

In diesem Code registrieren wir eine Funktion mit einem Initialisierungs-Hook, der in WordPress existiert. Dieser Hook startet die WordPress-Schleife und es ist ein guter Zeitpunkt, einen benutzerdefinierten Beitragstyp zu registrieren.

Nun müssen wir die Funktion definieren.

Der Schlüssel zum Verständnis des Namens der Funktion ist einfach: Wir haben sie tutsplus_register_post_type genannt, weil dies das zweite Argument ist, das wir in den add_action-Aufruf eingefügt haben.

Es weist WordPress wörtlich an, Folgendes zu tun: Rufen Sie zur Init-Zeit die Funktion tutsplus_register_post_type auf.

So weit, ist es gut. Wir haben nichts Kompliziertes gemacht, und wenn Sie Ihre WordPress-Admin-Seite aktualisieren, werden Sie feststellen, dass sich an der Funktionsweise nichts geändert hat.

Lassen Sie uns das beheben.

Erstellen eines benutzerdefinierten Beitragstyps

Wir haben jetzt den grundlegenden Code zum Hinzufügen unseres eigenen Action-Hooks. Lassen Sie uns nun einen benutzerdefinierten Beitragstyp namens time_traveler erstellen, der nur den Titel, den Editor und das Zitat enthält.

Dazu müssen wir die Funktion register_post_type im Codex berücksichtigen. Die Dokumentation gibt uns eine Liste aller Argumente, die die Funktion verarbeiten kann, aber für unseren benutzerdefinierten Beitragstyp verwenden wir nur einige davon.

Wir haben folgendes gewählt:

  • Etikett
  • Etiketten
  • Bezeichnung
  • öffentlich
  • show_ui
  • unterstützt

Wir hoffen, dass WordPress den Rest der Funktionalität automatisch bereitstellt. Die Argumente werden wie folgt aussehen:

"Zeitreisende", "labels" => array ("name" => "Zeitreisende", "singular_name" => "Zeitreisende", "add_new_item" => "Neuen Reisenden hinzufügen", "edit_item" => "Bearbeiten Traveler "," new_item "=>" Neuer Reisender "," view_item "=>" View Traveler "," search_items "=>" Search Travelers "," not_found "=>" No Travelers ",)," description "=> "Ein Beitragstyp, der verwendet wird, um Informationen über Zeitreisende bereitzustellen.", "Public" => true, "show_ui" => true, "supports" => array ("title", "editor", "excerpt"),) ;

Schließlich ist hier die Vollversion des Codes zum Registrieren des Beitragstyps:

"Zeitreisende", "labels" => array ("name" => "Zeitreisende", "singular_name" => "Zeitreisende", "add_new_item" => "Neuen Reisenden hinzufügen", "edit_item" => "Bearbeiten Traveler "," new_item "=>" Neuer Reisender "," view_item "=>" View Traveler "," search_items "=>" Search Travelers "," not_found "=>" No Travelers ",)," description "=> "Ein Beitragstyp, der verwendet wird, um Informationen über Zeitreisende bereitzustellen.", "Public" => true, "show_ui" => true, "supports" =>

Nach der Aktualisierung der Konsole sollte sich direkt unter den Kommentaren ein neues Element namens Zeitreisende befinden.

Wenn Sie auf Neu hinzufügen klicken, sehen Sie einen Platz für einen Titel (oder den Namen des Reisenden), einen Editor (für Reisendeinformationen) und ein Zitat (wahrscheinlich für Reisenotizen). Sie sehen auch eine Meta-Box zum Posten von Informationen.

Der obige Code zeigt uns natürlich, wie wir die vorhandenen Aktions-Hooks zum Definieren eines benutzerdefinierten Beitragstyps nutzen können. Aber was ist, wenn wir unseren eigenen Action-Hook erstellen wollen?

Definieren von benutzerdefinierten Aktionen

Wenn Sie Ihre eigenen Action-Hooks erstellen möchten, müssen Sie drei grundlegende Dinge tun:

  1. Haken definieren
  2. Gib einem Haken eine Funktion
  3. Entwicklern erlauben, den Hook aufzurufen

Das einfachste Beispiel:

Fühlen Sie sich frei, diesen Code zu tutsplus-actions.php hinzuzufügen, Sie können ihn nach dem Lesen unseres Artikels genauer studieren.

Danach können wir unsere tutsplus_action-Funktion überall im Code aufrufen. Stellen wir uns zum Beispiel vor, dass wir es oben auf der Admin-Seite anzeigen möchten. Fügen Sie dazu den folgenden Code hinzu:

Nach dem Aktualisieren der Konsole wird oben in der Konsole "Dies ist ein benutzerdefinierter Aktions-Hook" angezeigt.

Wir empfehlen nicht, Hooks zu admin_notices hinzuzufügen, es sei denn, Sie planen, Benutzern Fehlermeldungen oder erfolgreiche Aktionen zu senden. Wir zeigen dies nur als Beispiel für einen benutzerdefinierten Hook.

Zur Frage zu unserem Beitragstyp

Stellen wir uns vor, wir möchten eine benutzerdefinierte Beitragstyp-Funktion erstellen, die es uns ermöglicht, den Singular- und Plural-Beitragstypnamen mithilfe eines Action-Hooks in eine Funktion umzuwandeln.

Wie machen wir das? Zuerst müssen Sie eine benutzerdefinierte Funktion erstellen, die den Aktions-Hook aufruft. Lass uns das tun:

Als nächstes müssen wir etwas tun, was vielleicht ein wenig kontraintuitiv erscheint. Da unsere benutzerdefinierte Funktion im Kontext des Init-Hooks ausgeführt werden soll, müssen wir sicherstellen, dass unser Hook während der Init-Aktion ausgeführt wird.

Dazu hängen wir unseren benutzerdefinierten Hook an den Initialisierungs-Hook an:

Beachten Sie, dass wir im obigen Code zwei zusätzliche Parameter für do_action angegeben haben. Der erste Parameter ist 10, was die Priorität des Hakenstarts angibt.

Der Parameter kann eine beliebige Zahl sein, und je höher er ist, desto niedriger wird der Start in der Prioritätsliste sein. Der zweite Parameter ist die Anzahl der Argumente, die der benutzerdefinierte Hook akzeptiert. In unserem Fall gibt es eine für die Singularversion des Datensatztyps und eine für die Pluralversion des Datensatztyps.

Danach müssen wir dem Hook Funktionalität hinzufügen. Wir werden den Code zum Registrieren eines Beitragstyps zurückentwickeln, um zwei Argumente zu akzeptieren, die in dem Array verwendet werden, das an WordPress an die Funktion register_post_type übergeben wird.

$ plural, "labels" => array ("name" => $ plural, "singular_name" => $ singular, "add_new_item" => "Neuen Reisenden hinzufügen", "edit_item" => "Reisender bearbeiten", "new_item" => "New Traveler", "view_item" => "View Traveler", "search_items" => "Search Travelers", "not_found" => "No Travelers", "description" => "Ein Beitragstyp, der verwendet wird, um Informationen über Zeitreisende bereitstellen. register_post_type ("time_traveler", $ args); )

Bitte beachten Sie, dass wir diese Funktionalität nicht zu einem bestimmten Hook hinzufügen. Stattdessen rufen wir es aus der Funktionsdefinition auf, die mit unserer benutzerdefinierten Aktion verbunden ist.

Im obigen Code können wir die Funktionen aufrufen, die für die Registrierung des benutzerdefinierten Beitragstyps verantwortlich sind, indem wir unsere eigenen Argumente übergeben, um dem Code einige benutzerdefinierte Funktionen hinzuzufügen.

Ergebnisse

Es ist nicht schwer zu verstehen, was Haken sind. Sie verleihen Entwicklern Leistung und Flexibilität. Das vielleicht Abschreckendste an dem Code ist die Definition eines Hooks im Kontext eines anderen Hooks (Definition tutsplus_register_custom_post_type in init).

Wir haben uns entschieden, es als letztes Beispiel zu verwenden, da Sie manchmal einen benutzerdefinierten Hook registrieren und ausführen müssen, bevor Sie einen vorhandenen Hook ausführen.

Das Registrieren eines Hooks ist einfach: Sie müssen ihn nur nicht mit einem bestehenden verketten und die Basisfunktion aufrufen, wie im Code admin_notices.

Vielleicht habe ich die Namen dieser Dinge im Titel nicht ganz richtig geschrieben, aber ich werde Ihnen jetzt erklären, warum.

Haken - bedeutet einen Haken.

Irgendwo im WordPress-Engine-Code selbst oder in einem Plugin oder sogar in einem Theme gibt es Hooks, an die wir unseren Code hängen können, ohne die WordPress-Hauptdateien oder Plugin-Dateien zu beeinträchtigen. Auf diese Weise können Sie Plugins und die Engine sicher aktualisieren, und Ihr Code, der an diesen Hooks hängt, befindet sich irgendwo an einem separaten Ort.

Unsere Hooks werden in zwei Typen unterteilt: Filter und Aktionen.

  • Filter ermöglichen es Ihnen, die Werte von Variablen zu ändern, bevor Funktionen sie zurückgeben.
  • Aktionen ermöglicht es Ihnen, den gewünschten Code dort auszuführen, wo der Hook hängt.

Was ist wichtig zu wissen, bevor Sie mit WordPress-Hooks beginnen?

Es wird Ihnen viel leichter fallen, den Hook-Mechanismus zu verstehen, wenn Sie sich mit Arrays und Funktionen auskennen, ein wenig über Klassen wissen und ein gutes Verständnis dafür haben, wie globale Variablen funktionieren.

Ich bin auch auf viel Code gestoßen, bei dem eine anonyme Funktion an einem Haken hängt, obwohl ich die Verwendung aus mehreren Gründen nicht empfehle (PHP 5.3.0 ist erforderlich, sie funktionieren nicht richtig mit PHP-Beschleunigern, die Unmöglichkeit des Abbrechens) so einen Hook durch eine Funktion oder), aber nur wissen, dass es ihn gibt und wie er aussieht lohnt sich.

Schrittweise Analyse des Filters

Die Hauptaufgabe des Filters besteht darin, den Wert einer beliebigen Variablen zusätzlich mit einer beliebigen Funktion zu ändern, ohne die Hauptdateien der Engine oder Plugins zu beeinflussen.

Dies geschieht im Prinzip mit zwei Funktionen - und.

  1. Alles beginnt damit, dass es irgendwo im Code der WordPress-Engine oder des Plugins eine Variable gibt, auf die später ein Filter reagiert. An diese Variable hängt eine Funktion und das Ergebnis der Aktion der Funktion wird normalerweise derselben Variablen zugewiesen. Außerdem wird sofort der Name des Filters angegeben. Es könnte zum Beispiel so aussehen:
    $ x = apply_filters ("misha_filter", $ x);
  2. Danach können wir diese Variable mit Hilfe von bereits von außen beeinflussen. Dazu erstellen wir zum Beispiel in der Datei functions.php eine Funktion mit einem beliebigen Namen, das Funktionsargument ist die Variable $x, innerhalb der Funktion führen wir alle notwendigen Aktionen damit aus und geben schließlich die Ergebnisvariable zurück. Dann rufen wir neben der Funktion auf, in der wir den Namen des Filters und den Namen unserer beliebigen Funktion als Parameter angeben. Weniger Worte, mehr Action – so könnte es aussehen:
  3. Halt! Bevor Sie den Beitrag weiterlesen, probieren Sie alles selbst aus. Sie müssen dafür kein Plugin schreiben - einfach im Theme, zum Beispiel in header.php, die Variable $ x ausgeben und vor der Anzeige einen Filter darauf anwenden und diesen Filter in der Datei functions.php anwenden.

Einfachstes Beispiel mit Post-Inhalten in der WordPress-Engine selbst

Vielleicht ist Ihnen dieses Beispiel schon irgendwo begegnet - es steht in der offiziellen WordPress-Dokumentation, und ich habe es bereits erwähnt.

Sagen Sie mir, ist der Inhalt des Beitrags, den Sie im Editor im Admin-Panel haben und der auf der Site angezeigt wird, gleich oder unterschiedlich?

Dies ist wahrscheinlich eines der Dinge, die am meisten gefiltert werden, mit dem the_content-Filter werden Funktionen dem Beitragsinhalt überlagert, Shortcodes werden angewendet. Darüber hinaus könnte der Nutzer auch einige Hooks googeln und mit deren Hilfe beispielsweise Social-Media-Buttons unter dem Beitrag anzeigen.

Um es deutlich zu sehen, versuchen Sie, diesen Code an einer geeigneten Stelle im Design, in der footer.php oder an einer anderen Stelle einzufügen:

Schritt-für-Schritt-Analyse der Funktionsweise des Action-Hooks

Der Action-Hook hat die Aufgabe, eine Hilfsfunktion von außen an einer bestimmten Stelle im Code ausführen zu lassen, ohne den Code selbst zu verändern.

All dies geschieht auf die gleiche Weise wie bei Filtern mit zwei Funktionen - und

  1. Alles beginnt damit, dass es irgendwo im Code eine Stelle gibt, an der möglicherweise zusätzlicher Code ausgeführt werden muss. Wir werden diese Stelle durch eine Funktion bezeichnen, als deren Parameter wir den Namen des "Hakens" angeben. Es wird ganz einfach aussehen:

Ist das nicht ein einfacher Mechanismus?

Einfachstes Beispiel mit dem wp_head-Hook in WordPress

Es ist nur so, dass mir wp_head als erstes in den Sinn kam. Öffnen Sie also zunächst eine Seite auf Ihrer Website, öffnen Sie sie als HTML-Code in einem Browser. Gehen Sie nun in die Datei header.php und entfernen Sie die Funktion dort schnell per Tastendruck (sie startet den Hook). Sehen Sie danach, wie sehr sich Ihre Seite ändert - Stile, Skripte, vielleicht ein beliebiger Code verschwinden.

Parameter und Prioritäten

Prioritäten

Es ist viel einfacher, über Prioritäten zu sprechen, also fange ich damit an. Wie Sie bereits verstanden haben, ist es möglich, eine ganze Reihe von Funktionen an den gleichen Haken ("Hook") zu hängen. Aber manchmal ändern diese Funktionen den Wert derselben Variablen, was bedeutet, dass der Wert der Variablen unterschiedlich ist, wenn Sie sie austauschen.

Ich zeige Ihnen ein einfaches Beispiel mit anonymen Funktionen (Sie benötigen PHP Version 5.3.0 oder höher) und Aktions-Hooks. Wenn Sie diesen Code irgendwo auf der Site einfügen, werden die an den Hook angehängten Funktionen in der Reihenfolge ausgeführt, in der sie im Code verbunden wurden.

add_action ("misha_priority", Funktion () (Echo "A";)); add_action ("misha_priority", Funktion () (Echo "B";)); add_action ("misha_priority", Funktion () (Echo "B";)); // der Hook selbst do_action ("misha_priority"); // ABC wird ausgegeben

Und jetzt Achtung - Funktionen und dritte Parameter unterstützen die Angabe der Priorität, in diesem Sinne werden wir unseren Code ändern.

Wie Sie sehen, wird die Funktion umso später mit dem Hook verbunden und ausgeführt, je höher der Prioritätswert ist.

Übergeben zusätzlicher Argumente an eine Funktion

Was noch fehlt, ist die Übergabe zusätzlicher Parameter an die am Haken aufgehängten Funktionen. Und auch diese Möglichkeit wird geboten.

Alles beginnt damit, dass in einer Funktion oder ein oder mehrere Parameter angegeben werden.

do_action ("misha_action", $ param1, $ param2, $ param3);

Danach ist der vierte Parameter der Funktion

Fortsetzung des Themas:
Router

Moderne Daten- und Sprachanwendungen wie Gigabit-Ethernet zum Desktop werden in die Kategorie 5e eingestuft. Diese Lösung hat die erforderlichen Eigenschaften ...