web-dev-qa-db-fra.com

Créer un plugin pour changer l'action à laquelle une fonction est accrochée

J'ai un plugin qui relie une fonction à l'action woocommerce_before_my_account. J'aimerais plutôt que le plug-in rattache cette fonction à l'action woocommerce_after_my_account.

Si je crée mon propre plugin, est-il possible d'y parvenir? Si c'est le cas, comment?

Merci

2
Pete H

Vous pouvez utiliser la fonction remove_action() pour décrocher une fonction d’une action puis add_action() pour l'accrocher ailleurs. Notez que lors de la suppression d'une action, vous devez spécifier la balise (nom du crochet), la fonction et la priorité exactement telles qu'elles ont été ajoutées.

Edit: Voici quelques détails supplémentaires:

Vous devrez regarder la source de l'autre plugin pour déterminer comment le faire. Sans informations spécifiques sur le plugin et la fonction dont vous parlez, nous ne pouvons pas vous donner une réponse exacte, mais voici un exemple:

si le plugin accroche la fonction comme ceci:

add_action( 'woocommerce_before_my_account', 'function_to_move', 10 );

vous feriez quelque chose comme:

function my_move_woo_functions() {
    remove_action( 'woocommerce_before_my_account', 'function_to_move', 10 );
    add_action( 'woocommerce_after_my_account', 'function_to_move', 10 );
}
add_action( 'plugins_loaded', 'my_move_woo_functions' );

La partie importante est que vous devez déplacer l'action après la création de leur hook, mais avant que le hook ne soit exécuté.

3
Scott Nelle