アクションコールバックとして__construct
メソッドからプライベートメソッドを(同じクラス内から)呼び出したいクラスを作成しました。
パブリックメソッドを使用したい場合は、次の方法でアクセスできます。
add_action( 'init', array( $this, 'action_callback' ) );
ただし、これはメソッドがプライベートの場合はエラーになります。私も失敗しました:
add_action('init', $this->action_callback() );
プライベートメソッドにアクセスするにはどうすればいいですか?
クラスは次のようになります。
class My_class {
public function __construct() {
add_action( 'init', array( $this, 'action_callback' ) );
}
private function action_callback() {
// do something
}
}
アクションやフィルタを通してプライベートメソッドを呼び出すことはできません。 add_action
またはadd_filter
を呼び出すとき、WordPressはその特定のアクションまたはフィルタのコールバックのリストにコールバックを追加します。その後、do_action
またはapply_filters
が呼び出されると、WordPressはcall_user_func_array
を使用してリンクされた関数とメソッドを呼び出します。 call_user_func_array
はクラス内から呼び出されないため、そのクラスのプライベートメソッドを呼び出すことはできません。
さらに、クラスに別の(public)メソッドを追加し、それをアクションへのコールバックとして追加して、そのprivateメソッドを呼び出させることもできますが、そのメソッドを本当に非公開にする適切な方法はありません。しかし、そうすることで、あなたはメソッドがプライベートであるという本当の概念を失います。