web-dev-qa-db-fra.com

Puis-je utiliser une méthode d'un plugin existant en tant que crochet d'action?

Je veux utiliser une méthode d'un plugin comme un crochet, pas le rappel. Je souhaite utiliser une fonction personnalisée que j'ai écrite en tant que rappel, qui est déclenchée lorsqu'une méthode particulière d'un plug-in s'exécute. Essentiellement quelque chose comme:

add_action( array( "NAME OF CLASS", NAME OF METHOD" ), "MY CUSTOM FUNCTION" ) )

Je ne peux pas comprendre comment faire cela, toute aide ou direction serait grandement appréciée!

J'ai vérifié que la méthode et la classe existaient dans functions.php avec la fonction method_exists ().

MODIFIER:

J'utilise des plugins appelés Groups et Groups_File_Access pour gérer l'accès aux fichiers et les téléchargements sur mon site. La classe est "Groups_File_Access" "et la méthode à l'intérieur est" groups_file_served ". Je n'ai pas écrit ce plugin. Cette méthode est déclenchée lorsque quelqu'un accède à un fichier et je souhaite exécuter une fonction personnalisée lorsque" groups_file_served "est appelé J'essayais d'éviter d'éditer le plugin lui-même, mais il semblerait que j'en ai besoin.

1
Anna Villani

Il semble que vous cherchiez do_action() Dans votre méthode, vous avez écrit add do_action et cela déclenchera votre nouvelle action personnalisée. Ensuite, vous pouvez utiliser add_action() de la même manière que vous utilisez les actions intégrées.

https://developer.wordpress.org/reference/functions/do_action/

Exemple de votre méthode dans la classe ...

public function some_method() {
    $foo = 'puppy';
    $bar = 'bunny';
    do_action( 'my_nifty_action', $foo, $bar );
}

Ailleurs, vous pouvez ensuite ajouter l'appel à votre action ...

add_action( 'my_nifty_action', 'my_custom_function', 10, 2 );

function my_custom_function( $foo, $bar ) {
    // ... your code here
}
4
Scruffy Paws

Vous voulez donc exécuter du code lorsqu'une autre fonction est exécutée?

Non, vous ne pouvez pas faire cela avec des actions/filtres. Pour que cela fonctionne, la fonction aurait besoin de déclencher un crochet/filtre auquel vous pourriez accrocher. Si ce n'est pas le cas, vous devrez alors bifurquer le plugin

3
Tom J Nowell