You have to schedule your event in a hook, for example in after_setup_theme
or wp
actions:
add_filter('cron_schedules','my_cron_definer');
function my_cron_definer($schedules){
$schedules['twomin'] = array(
'interval'=> 120,
'display'=> __('Once Every 2 Minutes')
);
return $schedules;
}
add_action('my_periodic_action','my_periodic_function');
function my_periodic_function(){
mail('[email protected]','Test!', 'Test Message');
}
add_action( 'wp', 'wpse8170_setup_events' );
// or add_action( 'after_setup_theme', 'wpse8170_setup_events' );
function wpse8170_setup_events() {
if ( !wp_next_scheduled( 'my_periodic_action' ) ) {
wp_schedule_event(time(), 'twomin', 'my_periodic_action');
}
}