web-dev-qa-db-ja.com

既存のプラグインのメソッドをアクションフックとして使用できますか?

コールバックではなく、プラグインからのメソッドをフックとして使用したいです。私がコールバックとして書いたカスタム関数を使いたいのですが、それはプラグインからの特定のメソッドが実行されたときにトリガーされます。基本的には次のようなものです。

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

私はこれを行う方法を理解することはできません、任意の助けや指示は大歓迎です!

Method_exists()関数を使って、functions.phpにメソッドとクラスが存在することを確認しました。

編集:

私は自分のサイトでのファイルアクセスとダウンロードを処理するためにGroupsとGroups_File_Accessと呼ばれるプラグインを使っています。このプラグインは書きませんでした。このメソッドは誰かがファイルにアクセスしたときに呼び出され、 "groups_file_served"がフックされて呼び出されたときにカスタム関数を実行したいです。プラグイン自体の編集を避けようとしていましたが、私がする必要があるように見えます。

1
Anna Villani

Add do_actionを書いたメソッドでdo_action()を探しているように見えますが、それはあなたの新しいカスタムアクションを引き起こすでしょう。そうすると、ビルドインアクションを使用するのと同じ方法でadd_action()を使用できます。

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

クラス内のメソッドの例...

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

他のどこかであなたはそれからあなたの行動に電話をかけることができます...

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

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

別の関数が実行されたときにコードを実行したいのですか。

いいえ、それはアクションやフィルタではできません。それが機能するためには、この関数はフック/フィルタを起動する必要があります。それがこれをしないなら、あなたはプラグインをforkする必要があるでしょう

3
Tom J Nowell