it-swarm.com.de

Übergeben Sie Parameter an the function through a action

Ich versuche, den Wert einer Variablen an do_action zu übergeben und ihn dann in der resultierenden Funktion zu verwenden, aber es funktioniert nicht. Die Aktion wird in der Woocommerce-Kaufabwicklung ausgelöst, daher wird auch die Variable $ checkout übergeben, was gut funktioniert. Vereinfachtes Beispiel unten:

add_action( 'my_action', 'my_function' );
function my_function( $checkout, $myvar ) {
  var_dump ($checkout); //Works fine
  var_dump ($myvar); //Returns NULL
}

Und dann rufen Sie die Aktion in der Vorlage wie folgt auf:

$myvar = 1;
do_action( 'my_action', $checkout, $myvar );

Ich kann in der Funktion überhaupt nicht auf $ myvar zugreifen, jede Hilfe ist willkommen.

1
Lewis Donovan

add_action () und add_filter () nimm 4 Parameter: string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1.

Die Funktion, an die Sie sich binden, benötigt also mehr als 1 Parameter. Übergeben Sie dann einfach die Anzahl der akzeptierten Parameter als 4. Parameter an add_action(). In Ihrem Fall,

add_action ('my_action', 'my_function', 10, 2) ;