wp_schedule_event akzeptiert keine Argumente

Ich versuche, das Ereignis stündlich zu planen, aber es funktioniert nicht. Warum, kann ich nicht verstehen.

Hier ist eine function, mit der ich Ereignisse planen kann.

add_action( 'scheduled_update_feeds', 'update_feeds', 10, 2 ); function scheduled_activation() { wp_schedule_event( time(), 'everyhour', 'scheduled_update_feeds', array( 0, 'everyhour' ) ); } register_activation_hook( __FILE__, 'scheduled_activation' ); 

Laut meinem Verständnis sollte dies bei der Aktivierung des Plugins aktiviert werden und das Zeitplan-Event basierend auf meinen Einstellungen passieren.

Wenn ich es ohne Arrayarg verwende, funktioniert es , aber ich brauche Args, um ihnen meine geplante function zu übergeben.

Und das ist die function

 function update_feeds($ids = false, $timing = false) { do something } 

Wenn ich es so benutze, funktioniert es.

 wp_schedule_event( time(), 'everyhour', 'scheduled_update_feeds' ); 

Auch wenn ich in meiner function update_feed keine Argumente verwende, funktioniert es auch nicht. Das Merkwürdige ist, dass wenn ich einen einzelnen Zeitplan verwende, es funktioniert.

so was

 wp_schedule_single_event( time() + 10, 'scheduled_update_feeds', array($ids) ); 

Also verstehe ich nicht, warum es nicht funktioniert.

Und ich habe ‘Everyhour’ in meiner geplanten Liste definiert.

 add_filter( 'cron_schedules', 'my_schedule' ); $schedules['everyhour'] = array( 'interval' => 60, 'display' => __( 'Every hour', 'easy-video-grabber' ) ); 

Ich habe seine Existenz mit dem Cron Schedules Plugin überprüft und der Zeitplan existiert.

Solutions Collecting From Web of "wp_schedule_event akzeptiert keine Argumente"

Dies ist keine Lösung für Ihr Problem, aber es könnte Sie in die richtige Richtung zur Lösung des Problems führen. Ich würde vorschlagen, dieses Plugin zu überprüfen, damit Sie möglicherweise herausfinden können, was vor sich geht:

WP Cron Kontrolle

Es bietet eine schnelle Übersicht über Cron-Jobs, die auf Ihrer Site geplant sind. Ich habe es kürzlich verwendet, um ein Problem zu lösen, das auftrat, wenn geplante E-Mails nicht versandt wurden.

Auf die einfache Art und Weise. Registrieren Sie einen Filer, binden Sie ihn ein und verwenden Sie ihn. Für ein schnelles Beispiel:

Registrieren Sie eine Veranstaltung:

 // Create new cron job filter add_filter( 'cron_schedules', 'cron_add_five_minute' ); function cron_add_five_minute( $schedules ) { // Adds once weekly to the existing schedules. $schedules['five_minute'] = array( 'interval' => 300, 'display' => __( 'Five Minute' ) ); return $schedules; } 

functionen ausführen:

 add_action( 'wpfex_five_minute_event', 'wpfex_do_this_five_minute' ); /** * On the scheduled action hook, run a function. */ function wpfex_do_this_five_minute() { // Execute file every five minutes // Do what ever you want to do } 

* Bitte beachten Sie, dass sich wp cron-Jobs von üblichen Linux-Cron-Jobs unterscheiden. WordPress führt Thread intern aus, wenn der Benutzer auf die Website klickt. Wenn an einem Tag kein Treffer auf der Website erfolgt, wird kein Cron-Job ausgeführt, da der Cron-Job-Thread nicht ausgeführt wird.

Weitere Informationen dazu, wie Cron-Jobs in WP funktionieren, finden Sie in dieser Kurzanleitung

Vielen Dank

Ich hatte dieses Problem schon einmal. Was passiert (von der Optik her) ist, dass Sie den Action-Hook einrichten, der geplant werden soll, aber ihn nicht nutzen kann.

z.B

 function update_feeds($ids = false, $timing = false) { do something } wp_schedule_event( time(), 'everyhour', 'scheduled_update_feeds' ); 

Dazu benötigen Sie etwas wie:

 add_action('scheduled_update_feeds', 'update_feeds', 10, 2); 

wp_schedule_event richtet eine Aktion ein, die ausgeführt werden soll. Daher müssen Sie zusätzlich zu einer function für Aktionen eine Aktion hinzufügen, die für das angegebene Aktionstag ausgeführt werden soll.

  • Ihr wp_schedule_event teilt wordpress regelmäßig do_action auf planed_update_feeds mit
  • Ihre laufende function enthält Ihre auszuführende Verarbeitung
  • Sie müssen add_action auf planed_update_feeds verwenden, um Ihre function auszuführen.

Ich würde auch empfehlen, vor dem Hinzufügen zu prüfen, ob es existiert:

 $next_run = wp_next_scheduled('scheduled_update_feeds'); if ( $next_run ) { wp_unschedule_event( $next_run, 'scheduled_update_feeds'); } $first_run = time(); $result = wp_schedule_event( $first_run, 'everyhour', 'scheduled_update_feeds'); 

Schließlich würde ich empfehlen, weniger generische Namen zu verwenden, insbesondere für Ihre Verarbeitungsfunktion. Es gibt wahrscheinlich viele Leute da draußen, die eine function update_feeds erstellen.

Irgendwie, hoffe das hilft.