Ich arbeite in einem einfachen Plugin, das einen wp_cron Job initiiert.wp_cron() Aktualisierungszeit von Optionen Seite
Ich habe eine Optionen-Seite mit einem Feld (daily_message_time), wo ich meine gewünschte Zeit eingeben, um die Cron zu planen, sagen 17:30:00 zum Beispiel, und es wird wie erwartet in der Tabelle _options gespeichert. Ich kann dann diesen Wert bekommen und es verwenden, in meinem Plugin Skript wie folgt:
register_activation_hook(__FILE__, 'send_message');
function send_message() {
if (! wp_next_scheduled ('daily_email_event')) {
$options = get_option('my_settings');
$daily_time = $options['daily_message_time'];
// Honour WordPress timezone setting
$date = new DateTime($daily_time, new DateTimeZone(get_option('timezone_string')));
$timestamp = $date->getTimestamp();
// Shedule the event
wp_schedule_event($timestamp, 'daily', 'daily_email_event');
}
}
add_action('daily_email_event', 'send_email');
function send_email() {
// Do stuff
}
Dies funktioniert und ich kann meine cron ist geplant für die korrekte Zeit sehen:
Aber die Problem ist das: Wenn ich die Zeit auf meiner Optionen-Seite ändere, wird die neue Zeit in der Datenbank gespeichert, aber der Cron-Job zeigt die neue Zeit nicht an (sie behält die ursprüngliche Zeit bei). Die einzige Möglichkeit, es zum Laufen zu bringen, ist das Deaktivieren und Reaktivieren des Plugins. Danach zeigt es die neue Zeit an.
Wie kann ich das umgehen?
Gibt es ein Cache-Plugin, das Sie in Ihrem WordPress verwenden? Wenn ja, versuchen Sie den Cache zu löschen, nachdem Sie die Zeit geändert haben. –
@DharmaSaputra Nein, es ist kein Cache. In der Tat ist es eine neue Instanz von WordPres mit absolut keinen Plugins außer für die Basis (oben erwähnt), die ich gerade erstelle. – user3256143