Diese Frage könnte falsch sein, da bin ich mir nicht sicher. Weil mir das nicht klar ist.
Ich weiß, dass add_action
es verwendet wird, um unsere Funktion mit der angegebenen Funktion zu verknüpfen. Zum Beispiel wird add_action('wp_head'.'myfunc');
jetzt jeder Code in myfunc
der ausgeführt wp_head()
. Das ist klar, aber ich habe Zweifel, do_action
was es tut?
Ich denke, es wird verwendet, um unseren eigenen Hook zu erstellen, wie bereits verfügbare Hooks (wp_head, wp_footer usw.). Wenn ich richtig bin, kann mir jemand eine einfache verständliche Antwort mit einem einfachen Beispiel zeigen.
Ich habe den Unterschied im Internet ausprobiert, aber alle weisen auf den Unterschied zwischen add_action und add_filter hin. Ich möchte nicht dorthin gehen, weil ich das zuerst klären möchte und dann dorthin ziehe.
Kann mir jemand helfen?
BEARBEITEN nach Frage POST
function custom_register()
{
echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';
}
do_action('custom');
add_action('custom','custom_register');
Ich habe es im Plugin versucht, aber die Warnmeldung wurde nicht angezeigt.
Aber wenn ich die gleiche Funktion mit wp_head
einhake, dann funktioniert es gut
/******************working****************/
add_action('wp_head','custom_register');
do_action('custom');
nachdem Sie den Rückruf registriert haben? Und stellen Sie sicher, dass jQuery geladen ist.wp_head
es funktioniert gut , aber nicht mit dercustom
Antworten:
Verwenden
do_action( 'unique_name' )
Sie diese Option , um eigene Aktionen zu erstellen.Sie können dies verwenden, um eine API für Ihr Plugin anzubieten , sodass andere Plugins Rückrufe für Ihre benutzerdefinierte Aktion registrieren können. Beispiel: Muss ich in meinem Plugin do_action aufrufen?
Sie können jedoch auch benutzerdefinierte Aktionen (oder Filter) in einem Thema verwenden. Beispiel: Best Practice-Methode zum Implementieren benutzerdefinierter Abschnitte in ein WordPress-Design
Und Sie können beide kombinieren, um ein Plugin und ein Thema zu erstellen, die zusammenarbeiten. Beispiel: Wie kann man eine Methode aus einem Plugin in einem Theme verfügbar machen?
Zusammenfassung:
add_action( 'foo' )
Registriert einen Rückruf unddo_action( 'foo' )
führt diesen registrierten Rückruf aus.quelle
Dies ist meine Vermutung. Wenn Sie es also besser wissen, machen Sie bitte einen Kommentar, damit ich meine Vermutung aktualisieren kann.
Ihr Plugin-Code wird zuvor ausgeführt
wp_head()
(von dem wir annehmen können, dass er die hinzugefügten Aktionen aufruft). Wenn Sieadd_action('wp_head','custom_register')
angeben, dass PHP (in der Zukunft)do_action('wp_head')
aufgerufen werden soll, müssen Sie dies ebenfalls tuncustom_register()
. Dasselbe gilt für Ihren Aufruf von,add_action('custom','custom_register')
aber wie Sie in Ihrem Code sehen, wurde der Aufruf vondo_action('custom')
bereits ausgeführt, und als er aufgerufen wurde, wurde (noch) keine Aktion hinzugefügt. Deshalb hat Toscho gefragt, was passiert, wenn Sie anrufen,do_action('custom')
nachdem Sie den Rückruf registriert haben. Ihre Antwort zu Backend und Frontend ist nicht eindeutig. Wenn Sie die letzten beiden Zeilen in folgendem Code vertauschen, wird dies meiner Meinung nach funktionieren:quelle
do_action
: Registriert einen Aktions-Hook, währendadd_action
: dem registrierten Hook eine Rückruffunktion hinzufügt .Beispiel
Stellen Sie sich vor, Sie möchten etwas vor der Seitenleiste in Ihrer Vorlage drucken.
index.php
ein<?php add_action('bp_sidebar_left'); ?>
.functions.php
Datei diesem Hook eine Rückruffunktion hinzufügen, um etwas zu drucken, das Sie möchten.add_action('bp_sidebar_left', 'bp_sidebar_left_cb'); function bp_sidebar_left_cb() { echo 'Hello World !'; }
quelle
Sie müssen wie folgt verwenden:
quelle