web-dev-qa-db-fra.com

Est-il possible d'utiliser un objet dans add_action?

Alors, est-il possible de faire quelque chose comme ça avec add_action?

class class{}
$my_class = new class;
add_action('init', 'my_class');
4
user1692333

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.

4
s_ha_dum

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' );
2
Olga Farber
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

1
por