web-dev-qa-db-fra.com

Utiliser des hooks avec des paramètres supplémentaires

Je veux ajouter ma propre fonction à un hook existant. Voici la définition:

do_action( 'woocommerce_before_single_product_summary' );

La fonction d'origine qui l'utilise ressemble à ceci:

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

Puisque je ne veux pas toucher au thème, ni aux modèles de Woocommerce, je veux ajouter ma propre fonction mais avec une priorité inférieure et quelques 3 paramètres supplémentaires comme ceci:

add_action( 'woocommerce_before_single_product_summary', 'my_own_function', 6,  3);
  • C'est possible?
    • Si oui, où sont définis ces paramètres?
  • Si non,
    • Est-il possible d'utiliser des valeurs globales à la place?
    • Y a-t-il une autre solution à mon problème?
1
Izack

Puisque

do_action( 'woocommerce_before_single_product_summary' );

n'a pas d'argument supplémentaire comme:

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

alors votre rappel d'action sera toujours appelé sans aucun argument d'entrée.

function my_own_function ()
{
    // ...
}

Vous devrez donc l'obtenir par d'autres moyens: par exemple via des fonctions, des classes ou en exploitant les valeurs d’autres hooks.

Mais vous pouvez sûrement changer la priorité:

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

Si vous pouvez le modifier, par exemple dans le thème de votre enfant, à:

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

alors vous pouvez utiliser:

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

avec le rappel comme:

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