wake-up-neo.net

Unterschied zwischen do_action und add_action

Diese Frage könnte falsch sein, da bin ich mir nicht sicher. Weil mir das nicht klar ist.

Ich weiß, dass add_action verwendet wird, um unsere Funktion mit der angegebenen Funktion zu verknüpfen. Zum Beispiel add_action('wp_head'.'myfunc'); wird nun der Code in myfunc in der wp_head() ausgeführt. Dies ist klar, aber ich habe Zweifel an 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 dies zuerst klären möchte und dann dorthin ziehe.

Kann mir jemand helfen?

EDITnach dem POST der Frage

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 haken, dann funktioniert es gut

/******************working****************/
add_action('wp_head','custom_register');
20
sun

Verwenden Sie do_action( 'unique_name' ), um Ihre eigenen Aktionen zu erstellen.

Sie können dies verwenden, um eine API für Ihr Plugin anzubieten , damit andere Plugins Rückrufe für Ihre benutzerdefinierte Aktion registrieren können. Beispiel: Muss ich do_action in meinem Plugin 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-Thema

Und Sie können beides 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, do_action( 'foo' ) führt diesen registrierten Rückruf aus.

11
fuxia

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 ausgeführt, bevor wp_head() (von dem wir annehmen können, dass es die hinzugefügten Aktionen aufruft). Wenn Sie add_action('wp_head','custom_register'), sagen Sie PHP, dass, wenn (in der Zukunft) do_action('wp_head') aufgerufen wird, auch custom_register() aufgerufen werden soll. Dasselbe gilt für Ihren Aufruf von add_action('custom','custom_register'), aber wie Sie in Ihrem Code sehen, wurde der Aufruf von do_action('custom') bereits ausgeführt, und als er aufgerufen wurde, wurde (noch) keine Aktion hinzugefügt. Aus diesem Grund hat Toscho gefragt, was passiert, wenn Sie do_action('custom') after aufrufen und 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:

function custom_register()
{
    echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';

}
do_action('custom');                    // This is called before it will have an effect.

add_action('custom','custom_register'); // Too late - do_action was already called.
1
Dave Scotese

do_action: Registriert einen Aktions-Hook , während add_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.

  1. Sie fügen einen Aktions-Hook in Ihre Vorlagendatei ein index.php über <?php add_action('bp_sidebar_left'); ?>.
  2. Jetzt können Sie in Ihrer 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 !'; }

0
Aamer Shahzad