Planen einer Aufgabe mit classnmethoden

Ich muss eine geplante Aufgabe in meinem Plugin implementieren, und ich habe versucht, den Beispielen in der Dokumentation zu folgen, indem ich eine der classnmethoden als Ziel übergeben habe. Ich habe Cron Manager Plugin installiert, und ich sehe, dass mein Hook geplant wurde, aber der erste Zeitplan ist ein paar Sekunden in der Vergangenheit. Ich nehme an, das liegt daran, dass WP den allerersten Zeitplan auf “jetzt” setzt, was angeblich den Haken sofort aufrufen sollte.

Das Problem ist, dass die Methode, die ich an den Hook angehängt habe, nicht aufgerufen wird, und Cron Manager zeigt ” Sekunden links: -X ” an (wobei X die Anzahl der Sekunden angibt, die seit dem Zeitpunkt der Aufgabe verstrichen sind).

Ich werde das wp_schedule Zeug überspringen, da ich weiß, dass es funktioniert (der Haken ist in der geplanten Liste, obwohl mit einem Zeitstempel in der Vergangenheit), also hier ist der relevante Code:

 // Cron hook is called myclass_cron class MyClass { public function __construct() { add_action('init', array($this, 'wordpress_loaded')); } public function wordpress_loaded() { add_action('myclass_cron', array($this, 'cron_tasks')); } public function cron_tasks() { // Cron stuff. I tried adding a "sleep()" command to see if page load was slower, but it clearly doesn't go through this method } } 

Wenn ich eine do_action('myclass_cron') cron_tasks() , wird cron_tasks() wie erwartet ausgeführt. Ich habe mich gefragt, ob ich add_action() zu spät aufrufen add_action() dh wenn WP geladen wird), aber ich habe versucht, es in den classnkonstruktor zu verschieben, und das Problem blieb bestehen.

Vielen Dank im Voraus für die Antworten.

Solutions Collecting From Web of "Planen einer Aufgabe mit classnmethoden"

Ich habe tatsächlich herausgefunden, dass der Cron funktioniert, nur nicht so, wie ich es erwartet hatte. Ich habe die Seiten aktualisiert und wp-cron.php (mit wget ) ein paar Mal aufgerufen, und ich sah meinen Cron-Aufgabenplan mit ” -X Sekunden “. Dann habe ich für ein oder zwei Minuten angehalten und die Frontend-Seite der Seite aktualisiert, und meine Cron-Aufgabe wurde aufgerufen.

Als es Zeit für die zweite geplante Ausführung war, eine Stunde später, wiederholte ich den Test. Die Aufgabe war in ein paar Sekunden fällig, also wartete ich etwa 10 Sekunden und lud eine zufällige Seite ein: nichts passierte. Ich wartete noch eine halbe Minute, lud wieder eine zufällige Seite ein, und die Aufgabe wurde aufgerufen.

Es scheint, dass WordPress einen “entspannten” Weg hat, Cron-Jobs anzurufen, was ich noch nicht vollständig verstehe. Wie auch immer, meine Herangehensweise war korrekt, meine Erwartungen nicht. 🙂