Je suis assez perplexe sur celui-ci. J'utilise add_action dans ma classe de plugin pour faire certaines choses - ajouter des scripts et des styles à la tête, wp_ajax, etc. Voici les actions, dans le __construct:
function __construct(){
add_action('admin_menu', array($this, 'sph_admin_menu'));
add_action('sph_header', array($this, 'sph_callback'));
add_action('sph_header_items', array($this, 'sph_default_menu'), 1);
add_action('sph_header_items', array($this, 'sph_searchform'), 2);
add_action('sph_header_items', array($this, 'sph_social'), 3);
//Below here they don't work. I have to call these outside of the class (but I need class variables within the functions)
add_action('wp_print_styles', array(&$this, 'sph_stylesheets'));
add_action('wp_print_scripts', array(&$this, 'sph_scripts'));
add_action( 'wp_ajax_nopriv_add_to_list', array(&$this, 'le_add_to_list'));
add_action( 'wp_ajax_add_to_list', array(&$this, 'le_add_to_list'));
add_action('init', array(&$this, 'register_menu'));
}
Quelqu'un a déjà rencontré quelque chose comme ça? J'aimerais vraiment savoir comment utiliser ces crochets à l'intérieur d'une classe - c'est tellement compliqué d'avoir des actions en dehors de la classe!
$my_plugin = new MYClass();
depuis que j'ai utilisé ces mêmes crochets à partir d'une classe sans problème.public
visibilité.Réponses:
Parfois, certains crochets doivent être tirés à certains moments. Exemple, certains crochets doivent être tirés lors de l' initialisation .
Ajoutez ceci à votre
__construct()
Ajoutez ensuite cette fonction, qui contiendra tous les hooks qui doivent être tirés lors de l' initialisation .
Un autre exemple:
Vous voudrez lire sur les crochets et quand ils sont tirés. Vous savez donc quand et où déclencher vos actions. API de plugin / Référence d'action
la source
C'est une assez vieille question, mais au cas où quelqu'un chercherait une réponse, j'ai eu un problème similaire. J'ai eu un cours
Plugin :: init () n'a jamais été appelé. J'ai alors réalisé mon erreur. Pour instancier la classe, je faisais ceci:
Pour y remédier, je viens de changer le code d'instanciation en:
L'autre option serait d'utiliser un crochet différent dans le constructeur:
Ou un crochet antérieur dans l'instanciation:
la source