webentwicklung-frage-antwort-db.com.de

Verwenden von Hooks mit zusätzlichen Parametern

Ich möchte meine eigene Funktion zu einem bereits vorhandenen Hook hinzufügen. Hier ist die Definition:

do_action( 'woocommerce_before_single_product_summary' );

Die ursprüngliche Funktion, die es verwendet, sieht folgendermaßen aus:

add_action( 
    'woocommerce_before_single_product_summary',
    'woocommerce_template_single_title', 
    5 
);

Da ich weder das Thema noch die Woocommerce-Vorlagen berühren möchte, möchte ich meine eigene Funktion mit niedrigerer Priorität und einigen 3 zusätzlichen Parametern wie folgt hinzufügen:

add_action( 'woocommerce_before_single_product_summary', 'my_own_function', 6,  3);
  • Ist es möglich?
    • Wenn ja, wo sind diese Parameter definiert?
  • Wenn nicht,
    • Können stattdessen globale Werte verwendet werden?
    • Gibt es eine andere Lösung für mein Problem?
1
Izack

Schon seit

do_action( 'woocommerce_before_single_product_summary' );

hat keine zusätzlichen Eingabeargumente wie:

do_action( 'woocommerce_before_single_product_summary', $args1, $args2, $args3 );

dann wird Ihr Aktionsrückruf immer ohne Eingabeargumente aufgerufen.

function my_own_function ()
{
    // ...
}

Sie müssen es also auf andere Weise erhalten: z. durch Funktionen, Klassen oder durch Tippen auf Werte von anderen Hooks.

Aber Sie können die Priorität sicherlich ändern:

add_action( 'woocommerce_before_single_product_summary', 'my_own_function', 5 );

Wenn Sie es ändern können, z. in Ihrem Kinderthema, um:

do_action( 'woocommerce_before_single_product_summary', $args1, $args2, $args3 );

dann können Sie verwenden:

add_action( 'woocommerce_before_single_product_summary', 'my_own_function', 5, 3 );

mit dem Rückruf als:

function my_own_function ( $args1, $args2, $args3 )
{
    // ... you have now access to $args1, $args2, $args3
}
1
birgire