Ich bin ziemlich verblüfft. Ich benutze add_action in meiner Plugin-Klasse, um bestimmte Dinge zu erledigen - füge Skripte und Stile zum head, wp_ajax usw. hinzu. Hier sind die Aktionen im __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'));
}
Ist jemand auf so etwas gestoßen? Ich würde wirklich gerne wissen, wie man besagte Hooks innerhalb einer Klasse benutzt - es ist so chaotisch, Aktionen außerhalb der Klasse zu haben!
$my_plugin = new MYClass();
Da ich dieselben Hooks ohne Probleme aus einer Klasse heraus verwendet habe.public
sichtbar sind.Antworten:
Manchmal müssen bestimmte Haken zu bestimmten Zeiten abgefeuert werden. Zum Beispiel müssen einige Hooks bei init abgefeuert werden .
Fügen Sie dieses Ihrem hinzu
__construct()
Fügen Sie dann diese Funktion hinzu, die alle Hooks enthält, die bei init ausgelöst werden müssen .
Ein anderes Beispiel:
Sie möchten über die Haken und wann sie abgefeuert werden, lesen. So wissen Sie, wann und wo Sie Ihre Aktionen auslösen müssen. Plugin API / Action Referenz
quelle
Dies ist eine ziemlich alte Frage, aber falls jemand nach einer Antwort sucht, hatte ich ein ähnliches Problem. Ich hatte eine Klasse
Plugin :: init () wurde nie aufgerufen. Ich erkannte dann meinen Fehler. Um die Klasse zu instanziieren, habe ich Folgendes getan:
Um das Problem zu beheben, habe ich den Instantiierungscode folgendermaßen geändert:
Die andere Möglichkeit wäre, einen anderen Hook im Konstruktor zu verwenden:
Oder ein früherer Haken in der Instanziierung:
quelle