it-swarm.com.de

Geplantes Ereignis wird nicht ausgelöst

Ich versuche, einzelne, einmalige Termine in einem Plugin einzurichten. Egal was ich tue, ich kann nicht scheinen, die Ereignisse zum Feuern zu bringen. Ich verwende das Cron View Plugin , um zu sehen, was sich in der Warteschlange befindet, und die Ereignisse werden hinzugefügt und entfernen sich vollständig nach Zeitplan. Ich erhalte jedoch nie die E-Mail, die ich zum Senden in der Zielfunktion der Aktion festgelegt habe (nur um das Ereignis zu testen, wird es später mehr geben). Ich habe die Funktion außerhalb von geplanten Veranstaltungen getestet, es funktioniert. Hier ist ein Code:

GLOBAL $new_workshop_id;
$new_workshop_id = $wpdb->insert_id;

function send_reminders() {
 GLOBAL $new_workshop_id;
 wp_mail('[email protected]', 'Automatic ID: '.$new_workshop_id, 'here it is!');
}

if (!wp_next_scheduled('send_reminder_emails_'.$new_workshop_id)) {
 wp_schedule_single_event( time()+30, 'send_reminder_emails_'.$new_workshop_id );
}

do_action( 'send_reminder_emails_'.$new_workshop_id );
add_action( 'send_reminder_emails_'.$new_workshop_id, 'send_reminders' );

Eine Sache, die ich verdächtige, ist die Platzierung von do_acton und die Funktion selbst, send_reminders(). Der obige Code befindet sich in einigen if-Anweisungen, die nach POST vars suchen. Daher ist es möglich, dass der CRON-Job nicht auf die Funktion zugreifen kann. Wo soll ich die Funktion platzieren? Ich habe es ganz oben in der Plugin-Datei versucht. Nach dem, was ich gelesen habe, sollte do_action die Funktion aufrufen und ausführen, wo immer Sie do_action abgelegt haben, aber ich denke, ich muss wissen, wo send_reminders() zuerst abgelegt werden muss, damit auf sie zugegriffen werden kann, entweder durch den Cron-Job oder durch do_action.

Vielen Dank im Voraus für jede Eingabe!

2
Gavin

Die Verwendung von Cron Arg sieht komisch aus. Die Einfüge-ID gibt den Müll zurück, wenn Ihre Funktion aufgerufen wird.

Aus dem gleichen Grund glaube ich, dass es besser ist, es immer mit dem Argument id einzufügen, wenn dies für die Protokollierung ist. Sonst drosseln Sie im Grunde Ihre Protokolle.

Sind Sie sicher, dass wp_mail () funktioniert?

3