J'ai créé une classe à partir de laquelle je voudrais appeler une méthode privée (à partir de la même classe) à partir de la méthode __construct
en tant que rappel d'action.
Lorsque je souhaite utiliser une méthode publique, je peux y accéder par:
add_action( 'init', array( $this, 'action_callback' ) );
Cependant, cela provoque une erreur lorsque la méthode est privée. J'ai aussi essayé sans succès:
add_action('init', $this->action_callback() );
Comment accéder à une méthode privée?
La classe ressemble à quelque chose comme:
class My_class {
public function __construct() {
add_action( 'init', array( $this, 'action_callback' ) );
}
private function action_callback() {
// do something
}
}
Il n'est pas possible d'appeler une méthode privée via une action ou un filtre. Lors de l'appel de add_action
ou add_filter
, WordPress ajoute le rappel à une liste de rappels pour cette action ou ce filtre spécifique. Ensuite, lorsque do_action
ou apply_filters
est appelé, WordPress utilise call_user_func_array
pour appeler les fonctions et méthodes liées. Comme call_user_func_array
n'est pas appelé depuis la classe, il ne peut pas appeler les méthodes privées de cette classe.
De plus, il n'y a pas de moyen approprié de vraiment garder la méthode privée, même si vous pouvez ajouter une méthode (publique) séparée à votre classe, l'ajouter comme rappel à l'action et faire appeler la méthode privée. En faisant cela, cependant, vous perdez le vrai concept de la méthode étant privée.