Alors, est-il possible de faire quelque chose comme ça avec add_action
?
class class{}
$my_class = new class;
add_action('init', 'my_class');
Tu peux le faire:
class testclass {
function test() {
echo 'howdy';
}
}
add_action('wp_head',array('testclass','test'));
Ou ca:
$t = new testclass();
add_action('wp_head',array($t,'test'));
Ça ne marche pas comme ...
$t = new testclass();
add_action('wp_head','t');
// or this either, for good measure
$t = new testclass();
add_action('wp_head',array('t'));
..mais je ne suis pas sûr de ce que vous essayez d'accomplir en utilisant ce modèle. Vous avez déjà instancié la classe et le constructeur, s'il est présent, a déjà été exécuté. Sans méthode de rappel, je ne sais pas ce que vous attendez.
Dans la réponse (acceptée), le premier exemple est incorrect:
class testclass() {
function test() {
echo 'howdy';
}
}
add_action( 'wp_head', array( 'testclass', 'test' ) );
C'est incorrect car la méthode test
n'est pas statique.
L'utilisation correcte pour l'appel statique dans l'action serait:
class testclass() {
function static test() {
echo 'howdy';
}
}
add_action( 'wp_head', array( 'testclass', 'test' ) );
vous pouvez aussi l'écrire alors:
add_action( 'wp_head', 'testclass::test' );
class MyPluginClass {
public function __construct() {
add_action( 'save_post', array( $this, 'myplugin_save_posts' ) );
}
public function myplugin_save_posts() {
// do stuff here...
}
}
$mypluginclass = new MyPluginClass();
check in Utilisation de Add Action dans votre classe dans WordPress Codex