web-dev-qa-db-fra.com

Passer les paramètres pour fonctionner à travers une action

J'essaie de passer la valeur d'une variable dans do_action, puis de l'utiliser dans la fonction résultante, mais cela ne fonctionne pas. L'action est déclenchée dans la commande woocommerce, elle transmet donc également la variable $ checkout, qui fonctionne correctement. Exemple simplifié ci-dessous:

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

Et puis en appelant l'action dans le template comme ceci:

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

Je ne peux pas accéder à $ myvar du tout dans la fonction, aucune aide appréciée.

1
Lewis Donovan

add_action () et add_filter () take 4 paramètres: string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1.

Ainsi, la fonction à laquelle vous vous connectez prend plus d'un paramètre, puis transmettez simplement le nombre de paramètres acceptés en tant que quatrième paramètre à add_action(). Dans ton cas,

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