Doppelte Cron-Jobs mit wp_next_scheduled / wp_schedule_event

Ich arbeite an einem Plugin, um verschiedene Cron-Jobs zu registrieren und zu planen. Ich bin:

  • mit WP Crontrol (nur um alle meine Cron-Jobs zu sehen und sie bei Bedarf zu überschreiben)
  • habe einen Server-Cron-Job eingerichtet und habe define('DISABLE_WP_CRON', true); an Ort und Stelle

Als ich bei Crontrol in “Cron Events” ging, sah ich, dass einige functionen buchstäblich hunderte Male hinzugefügt wurden. Speziell in ‘Cron Events’ ist die function, was registriert / aufgelistet wird, nicht der Haken. Eine vereinfachte Version meines Codes:

 class My_Cron_Manager { /** * Constructor */ public function __construct() { add_filter( 'wp', array( $this, 'my_schedule_cron_jobs' ) ); add_action( 'my_cron_event_func', array( $this, 'my_cron_job_func' )); } /** * Schedule cron Jobs */ public static function my_schedule_cron_jobs() { if (! wp_next_scheduled ( 'my_cron_job_func' )) { wp_schedule_event(time(), 'twicedaily', 'my_cron_job_func'); }; } /** * My Function */ public static function my_cron_job_func() { // Do Stuff } } new My_Cron_Manager(); 

Ich habe den Verdacht, dass ich einen Fehler in meinem Code hatte, der die function erneut registriert hat, aber ich bin mir nicht ganz sicher. wp_next_scheduled ich wp_next_scheduled und wp_schedule_event korrekt?

Kann mir jemand bitte mitteilen, ob der obige Code eine doppelte Hook / Function-Registrierung verursachen würde?

Danke im Voraus!

Solutions Collecting From Web of "Doppelte Cron-Jobs mit wp_next_scheduled / wp_schedule_event"

Ok, ich glaube, ich habe Dinge richtig funktionieren. Ich wäre neugierig, wenn jemand mehr Erkenntnisse hätte, aber ich glaube, was passierte:

  • Ich habe meine class falsch angerufen
  • Ich habe auf eine classnfunktion in wp_next_scheduled und wp_schedule_event wenn ich auf einen Callback / Hook wp_schedule_event sollte.

Mein überarbeiteter Code (der getestet wurde und ich kann bestätigen, funktioniert).


 define( 'MY_CRON_FILE', __FILE__ ); class MY_Cron_Manager { /** * Hook in methods. */ public static function init() { register_activation_hook( MY_CRON_FILE, array(__CLASS__, 'my_schedule_cron_jobs' )); add_action( 'my_cron_job_event_func', array( __CLASS__, 'my_cron_job_func' )); // } /** * Schedule cron Jobs */ public static function my_schedule_cron_jobs() { if (! wp_next_scheduled ( 'my_cron_job_event_func' )) { wp_schedule_event(time(), 'twicedaily', 'my_cron_job_event_func'); }; } /** * My Function */ public static function my_cron_job_func() { // Do Stuff } } MY_Cron_Manager::init();