WordPress besitzt einen eigenen Cron und bestimmte Themen automatisiert und zeitgesteuert laufen zu lassen. Dabei werden diverse Funktionen für die Nutzung des Cron von WordPress zur Verfügung gestellt.
Im ersten Fall senden wir so zum Beispiel jede Stunde an Mail mit Hilfe der WordPress-Funktion wp_mail()
raus. Diese Möglichkeit soll nur die Funktion darstellen, nicht zum Nachmachen anregen!
Im Standard kann WordPress mit drei Zeitschlüsseln umgehen, die man der Funktion wp_schedule_event
mitgeben muss.
// send automatic scheduled email
if ( !wp_next_scheduled('my_task_hook') ) {
wp_schedule_event( time(), 'hourly', 'my_task_hook' ); // hourly, daily and twicedaily
}
function my_task_function() {
wp_mail('example@yoursite.com', 'Automatic mail', 'Hello, this is an automatically scheduled email from WordPress.');
}
add_action('my_task_hook', 'my_task_function');
Wer den Cron nutzt, sei es im Plugin oder Theme, der sollte nicht vergessen, den Cron auch zu deaktivieren, wenn man ihn nicht mehr benötigt.
// clean the scheduler
function my_task_deactivate() {
wp_clear_scheduled_hook('my_task_hook');
}
delete_action( 'my_task_hook', 'my_task_deactivate' );
Nicht immer reichen die Vorgabewerte für die zeitliche Steuerung und so kann man auch diese via Filter erweitern.
add_filter( 'cron_schedules', 'filter_cron_schedules' );
// add custom time to cron
function filter_cron_schedules( $schedules ) {
$schedules['once_half_hour'] = array(
'interval' => 1800, // seconds
'display' => __( 'Once Half an Hour' )
);
return $schedules;
}