Startseite » WordPress » So verwenden Sie WordPress-Aktionshaken in der Designanpassung

    So verwenden Sie WordPress-Aktionshaken in der Designanpassung

    Untergeordnete WordPress-Designs bieten eine relativ einfache Möglichkeit, das Erscheinungsbild eines Designs anzupassen. Wenn Sie mit den Optionen des Themas keine adäquaten Design-Optionen erhalten, können Sie der Standardstylesheet-Datei des untergeordneten Themes mit dem Namen style.css einfach eine neue Regel hinzufügen. Aber was passiert, wenn du auch willst Ändern Sie die Funktionalität des Themas? Dies ist einer der Fälle, in denen WordPress-Aktionen zu Hilfe kommen.

    WordPress ist unter anderem wegen seiner hohen Anpassbarkeit so beliebt. Der WordPress Core enthält verschiedene Hooks, mit denen Entwickler die Standardfunktionalität ändern oder verbessern können. Darüber hinaus dürfen wir aufnehmen benutzerdefinierte Haken in unseren Themen und Plugins Helfen Sie anderen Entwicklern, unseren Code einfach an ihre Bedürfnisse anzupassen.

    Über WordPress-Hooks

    WordPress-Hooks funktionieren ähnlich wie echte Hooks in dem Sinne, dass Sie den gewünschten Fisch an der richtigen Stelle fangen können, wenn Sie ihn richtig verwenden.

    Sie können eine gefangene Funktion entfernen (Sie können beispielsweise die WordPress-Admin-Leiste für Benutzer mit niedrigem Level entfernen) lass es intakt und verbessern Sie es mit Ihrer eigenen Funktionalität (z. B. können Sie einem Design weitere Menüs oder Widgetbereiche hinzufügen) oder Sie können dies überschreiben Sie es (Sie können beispielsweise das Verhalten einer Kernfunktion ändern.).

    Es gibt zwei verschiedene Arten von Hooks in WordPress: Aktionen und Filter. In diesem Beitrag werden wir uns ansehen, wie wir können Verwenden Sie Action-Hooks in der Motivanpassung.

    Wie funktionieren WordPress-Hooks?

    Eine sehr einfache Sprache verwenden, Aktionen weisen darauf hin, dass Während des Lebenszyklus der WordPress-Seite ist etwas passiert: Bestimmte Teile der Site wurden geladen, bestimmte Optionen oder Einstellungen wurden eingerichtet, Plugins oder Widgets wurden initialisiert und so weiter.

    Filter unterscheiden sich von Aktionen in ihrer Natur. Sie sind gewöhnt an Daten durchleiten, und ändern, verwalten oder abfangen vor dem Rendern auf dem Bildschirm oder Speichern von Benutzerdaten in der Datenbank.

    An jedem wichtigen Meilenstein des WordPress-Seitenlebenszyklus gibt es entweder eine Aktion oder ein Filter Haken an dem wir können Fügen Sie unseren benutzerdefinierten Code hinzu, um das Standardverhalten zu ändern zu unseren Bedürfnissen.

    Die bestimmten Aktionen und Filter, die während einer Anforderung ausgeführt werden, hängen davon ab, welche Seite vom Benutzeragenten angefordert wurde: Zum Beispiel in einem Post-Request-Hooks für einzelne Posts sind die Hooks mit anderen Teilen der Site (z. B. dem Admin-Bereich) nicht.

    Aktionshaken finden

    Die Aktionsreferenz des WordPress-Codex gibt einen detaillierten Überblick über die Aktionen, die verschiedene Anforderungen durchlaufen. Das Wichtigste ist, wenn wir eine Aufgabe erfüllen wollen, müssen wir dies tun haken an der richtigen Stelle, nicht davor oder danach, sonst wird die Aktion nicht abgeschlossen.

    Also zum Beispiel, wenn wir wollen Fügen Sie unserer Website unseren Google Analytics-Code hinzu wir müssen Haken Sie unsere Aktion ein, bevor die Fußzeile geladen wird.

    Wenn wir über die Anpassung von Motiven sprechen, können Action-Hooks von zwei verschiedenen Orten kommen: von WordPress-Kern und das Thema selbst. Es gibt Designs, die keine Haken haben, aber andere bieten Entwicklern einige oder viele - es ist immer die Wahl des Autorens. Das standardmäßige Twenty Fifteen Theme verfügt nur über einen Aktionshaken für die Anpassung der Fußzeile unter dem Namen "twentyfifteen_credits"..

    Wenn Sie den Quellcode durchsuchen möchten, können Sie auch Action-Hooks leicht finden. Action-Hooks werden mit der WordPress-Funktion do_action () zum Code hinzugefügt.

    Wenn Sie eine schnelle Suche nach dem Ausdruck 'do_action' in einem erweiterten Code-Editor ausführen - wie ich es in Eclipse gemacht habe - können Sie eine Liste mit den Stellen sehen, an denen Sie Ihre benutzerdefinierten Funktionen in den Kern einbinden können. Ich suchte im / wp-Includes / Ordner, Sie können aber auch nach dem Ordner suchen / wp-admin / Ordner, der die Action-Hooks enthält, die sich auf das WordPress-Dashboard beziehen (Administrationsbereich).

    Das Gute ist, dass die Namen der Action-Hooks normalerweise ziemlich selbsterklärend sind, aber es gibt sie normalerweise ein netter Kommentar im Code Auf diese Weise können Sie mehr wissen, ob der angegebene Action-Hook für den Grund gut ist, für den Sie ihn verwenden möchten.

    Zum Beispiel sagt der Code-Kommentar vor dem Aktions-Hook 'widgets_init' dies “wird ausgelöst, nachdem alle Standard-WordPress-Widgets registriert wurden”. Wenn Sie einen Blick auf den Code vor diesem Aktionshook werfen, können Sie die Initialisierung aller Standard-WP-Widgets vor diesem Code finden. So können Sie sicher sein, dass der Kommentar nicht gelogen hat und ob Sie Ihr eigenes Widget registrieren möchten. Dies wird der richtige Ort sein.

    In vielen Fällen liefert der Quellcode viel mehr Informationen als der Codex. Daher kann es eine gute Idee sein, zu lernen, wie man schnell darin navigiert.

    Fügen Sie Ihre eigenen Aktionen hinzu

    Wenn Sie Ihre eigene Aktion hinzufügen möchten, müssen Sie dies tun Erstellen Sie eine benutzerdefinierte Funktion und Binden Sie diese Funktion an einen bestimmten Aktionshaken indem Sie die WordPress-Funktion add_action () verwenden. Benutzerdefinierte Aktionen, die mit der Funktion add_action () hinzugefügt werden, sind in der Regel sofort ausgelöst wenn der Kern die entsprechende do_action () - Funktion aufruft.

    Sehen wir uns ein einfaches Beispiel an.

    So finden Sie den Action-Hook, den Sie benötigen

    Angenommen, Sie möchten Ihrer Website ein benutzerdefiniertes Favicon hinzufügen. Zuerst müssen Sie den richtigen Action-Hook finden, an den Sie Ihre eigene Funktionalität binden können.

    Denken wir nach. Wenn Sie einer einfachen HTML-Seite ein Favicon hinzufügen möchten, wo würden Sie es ablegen? Natürlich müssen Sie es in der Abschnitt der HTML-Datei mit der folgenden Markierung:

      

    Der Action-Hook muss also sein im Zusammenhang mit dem Laden der Sektion.

    (1) Öffnen Sie die Aktionsreferenz und sehen Sie, was sie zu bieten hat. Wir haben Glück, als würden wir durch die Aktionen blättern, können wir nur eine finden, wp_head, die aufgrund ihres Namens die Möglichkeit hat, mit dem Laden von verknüpft zu werden Sektion.

    (2) Um sicher zu sein, lass uns Überprüfen Sie die Dokumentation im WordPress-Codex. Der Kodex rät das “Sie verwenden diesen Hook, indem Sie das Echo Ihrer Funktion im Browser ausgeben lassen”, jetzt scheint es für uns perfekt zu sein. Aber lasst es uns im Quellcode überprüfen.

    (3) Da dieser Hook nicht mit dem Admin-Bereich zusammenhängt, müssen wir unsere Suche im durchführen / wp-Includes / Mappe. Wenn wir nach dem Wort "wp-head" suchen, werden wir viele Ergebnisse erhalten, da diese spezifische Aktion von WP Core häufig verwendet wird.

    Wir müssen nach der Stelle suchen, an der sie definiert wird, also nach dem Ausdruck suchen do_action ('wp_head'). Beachten Sie, dass wir die Klammern nicht fertig gestellt haben, da wir noch nicht sicher sind, ob diese Aktion Parameter hat oder nicht.

    Eclipse gibt nur ein Ergebnis zurück, das im gefunden werden kann /wp-includes/general-template.php Datei. Der Kommentar vor der Action-Hook-Definition sagt es aus “druckt Skripte oder Daten im head-Tag am Frontend”, so können wir jetzt absolut sicher sein wp_head ist der Action-Hook, den wir brauchen.

    Auf Parameter überprüfen

    Wenn Sie eigene Aktionen hinzufügen, müssen Sie auch sicherstellen, dass der gewünschte Hook Parameter verwendet oder nicht. Sie können dies leicht herausfinden, indem Sie die Funktion do_action () betrachten.

    Die Syntax der do_action () - Funktion lautet wie folgt:

     do_action ('name_of_action' [, $ parameter1, $ parameter2,…]) 

    Es ist nur der Name der Aktion erforderlich, die Parameter sind optional. Wenn Sie im entsprechenden Aufruf der Funktion do_action () Argumente finden, müssen Sie dies tun Fügen Sie sie in die Deklaration der von Ihnen erstellten benutzerdefinierten Funktion ein.

    Wenn Sie keine finden, muss Ihre benutzerdefinierte Funktion ohne Argumente funktionieren. In der do_action () - Definition des Aktionshakens wp_head gibt es keine Parameter.

    Vergleichen wir es mit einem Action-Hook, der einen Parameter übernimmt. Der Aktions-Hook 'wp_register_sidebar_widget' benötigt einen Parameter, den Sie immer an die benutzerdefinierte Funktion übergeben müssen, die Sie an den Hook binden.

    Sehen wir uns den Unterschied in der do_action () -Syntax der beiden Fälle an:

     do_action ('wp_head'); do_action ('wp_register_sidebar_widget', $ widget);

    Im ersten Fall gibt es keine Parameter, daher verwendet die benutzerdefinierte Funktion die folgende Syntax:

     Funktion my_function_without_parameters () … 

    Im zweiten Fall gibt es einen Parameter, den Sie immer als Argument in die Deklaration Ihrer benutzerdefinierten Funktion übergeben müssen:

     Funktion my_function_with_parameters ($ widget) … 

    So hängen Sie Ihre benutzerdefinierte Funktion ein

    Jetzt wissen wir alles, was wir brauchen. Lassen Sie uns eine benutzerdefinierte Funktion erstellen, die ein Favicon auf unserer Website anzeigt.

    Erstellen Sie zunächst eine neue Funktion ohne Argumente, und binden Sie sie mit Hilfe der WordPress-Funktion add_action () an den Action-Hook wp_head.

     Funktion custom_add_favicon () echo '';  add_action ('wp_head', 'custom_add_favicon');

    Du musst gib den Namen weiter des Aktionshakens an die add_action () - Funktion als Argument zuerst, dann musst du Fügen Sie den Namen Ihrer benutzerdefinierten Funktion hinzu.

    Dies sind die zwei erforderlichen Parameter von add_action (). Es hat auch zwei optionale Parameter, Priorität und akzeptierte Argumente. Mal sehen, wie man diese benutzt.

    Prioritäten definieren

    In vielen Fällen kommt es vor, dass mehr als eine Aktion an denselben Hook gebunden ist. So welches wird zuerst ausgeführt? Hier können wir das nutzen $ Priorität optionaler Parameter der Funktion add_action ().

    Wir fügen die Priorität als positive ganze Zahl hinzu, Der Standardwert ist 10. Wenn wir möchten, dass eine Aktion früh ausgeführt wird, geben wir ihr einen niedrigeren Wert, wenn sie später ausgeführt werden soll, geben wir ihr einen höheren Wert.

    Wenn wir also denken, dass das Favicon früh da sein muss, können wir unseren vorherigen Aufruf von add_action () folgendermaßen verbessern:

     add_action ('wp_head', 'custom_add_favicon', 5); 

    Bitte beachten Sie, dass die Prioritäten immer sein müssen relativ zu den anderen benutzerdefinierten Funktionen eingestellt die den gleichen Aktionshaken verwenden.

    Fügen Sie die Anzahl der akzeptierten Argumente hinzu

    Sie müssen die Anzahl der akzeptierten Argumente hinzufügen, wenn Sie einen Action-Hook verwenden, der Parameter verwendet. Sehen wir uns das Beispiel an, das wir zuvor verwendet haben.

    Der Aktions-Hook 'wp_register_sidebar_widget' benötigt einen Parameter. Wenn wir unsere benutzerdefinierte Funktion an diesen Hook binden, müssen wir dies auch als Argument angeben, wenn wir die add_action () - Funktion aufrufen.

    Unser Code wird in diesem Fall folgendermaßen aussehen:

     function my_sidebar_widget_function ($ widget) // Ihr Code add_action ('wp_register_sidebar_widget', 'my_sidebar_widget_function', 10, 1); 

    Beachten Sie, dass wir müssen fügen Sie auch die Priorität hinzu (Wir haben hier die Standardeinstellung 10 gewählt), um sicherzustellen, dass WordPress weiß, was die einzelnen Parameter bedeuten. Wenn wir die Priorität weglassen, könnte WordPress annehmen, dass 1 die Priorität ist was nicht stimmt, da es die Anzahl der akzeptierten Argumente angibt.

    Fazit

    Sie können viele Versuche mit Action-Hooks in der Motivanpassung durchführen. Sie können beispielsweise Ihre benutzerdefinierten Skripts (JS) und Stile (CSS) mit dem Action-Hook wp_enqueue_scripts oder Ihren Google Analytics-Code mit dem Action-Hook wp_footer hinzufügen.

    Sie können nicht nur fügen Sie Ihre eigenen Aktionen hinzu, aber du kannst es auch komplette Funktionalitäten entfernen aus dem WordPress-Kern mit der Funktion remove_action (), die dieselbe Logik wie add_action () verwendet.

    Wenn Sie ein Designautor sind und ein erweiterbares Design erstellen möchten, kann dies eine gute Idee sein Fügen Sie den entsprechenden Vorlagendateien Ihre eigenen benutzerdefinierten Aktionshaken hinzu mit der Funktion do_action ().

    Wenn du das willst, Überlegen Sie sorgfältig, welche Parameter andere Entwickler haben Wer wird dein Thema verwenden muss als Argumente übergeben werden wenn sie ihre individuellen Funktionalitäten einhängen möchten.

    Vergessen Sie das nicht, wenn Sie die Positionen der benutzerdefinierten Aktionshaken Ihres Themas entwerfen Es macht nicht viel Sinn, benutzerdefinierte Theme-Hooks an den gleichen Stellen einzubinden, an denen der WordPress-Core selbst eigene Hooks hat.