Kann ein Scheduler bei der Übergabe eines Formulars in WordPress festgelegt werden?

Ich brauche einen Scheduler, um eine WordPress-Website nach einem bestimmten Intervall automatisch mit dem neuen csv zu aktualisieren.

Ich habe viele Beispiele für wp_schedule_event aber alle erstellten Cron-Jobs bei der Aktivierung des Plugins. Wenn ich dasselbe mache, dann wird der Code ausgeführt. Aber meine Anforderung ist, sie beim Senden eines Formulars durch den Administrator zu planen.

Meine Anforderung ist:

Nach der Aktivierung des Plugins wählt der Admin das Intervall aus. Beim Abschicken dieses Formulars möchte ich den Scheduler so einstellen, dass er automatisch nach dem csv mit dem Intervall (ausgewählt von admin) sucht, so dass die Seite automatisch durch neues csv aktualisiert wird.

Bei der Formularübermittlung rufe ich eine PHP-Seite an. Auf dieser Seite habe ich diesen Code geschrieben:

 $interval=$_POST['select_interval']; require_once (str_replace ( '//', '/', dirname ( __FILE__ ) . '/' ) . '../../../wp-config.php'); if( !wp_next_scheduled( 'mycronjob' ) ) { wp_schedule_event( time(), $interval, 'cronjob',$arguments); } } add_action ('cronjob', 'update_csvSchedular'); function update_csvSchedular($args){ //code to check for csv } 

Solutions Collecting From Web of "Kann ein Scheduler bei der Übergabe eines Formulars in WordPress festgelegt werden?"

Es ist falsch, wp_schedule_event in der Plugin-Aktivierung und im cronjob Tag cronjob . Das richtige Tag zum Anhaken ist wp .

Das interne Cron-System von WordPress arbeitet nach der “request-response” -Methode. Es prüft sofort nach jeder Anforderung an das gesamte System nach geplanten Ereignissen. Nach der Überprüfung der geplanten Ereignisse lädt es die nächsten Teile des Systems.

Also, Hooking Scheduling zu init ist zu früh und cronjob , Plugin-Aktivierung und etc. sind zu spät, sie könnten funktionieren, aber das ist nicht der richtige Weg.

Der beste Weg, um Ihr Ereignis durch benutzerdefinierte Daten zu planen, ist das Abrufen der Daten aus der database. Sie können die admin gegebenen Einstellungen in der database speichern (zum Beispiel update_option ) und das Ereignis mit dem angegebenen Wert ( get_option ) an das wp Tag get_option .

Beispielsweise:

 add_action( 'wp', 'my_scheduled_event' ); function my_scheduled_event() { $interval = get_option( 'task_interval' ); if ( ! wp_next_scheduled( 'my_daily_task' ) ) wp_schedule_event( time(), $interval, 'my_daily_task' ); }