Wordpress Cron作业的自定义事件未执行

时间:2014-09-05 11:21:46

标签: php wordpress

以特定时间间隔执行的方法

function informant_main_action(){
    die('working');
}

Cron作业的自定义计划

    function my_cron_definer($schedules){  
        $schedules['weekly'] = array('interval'=> 120, //604800
            'display'=>  __('Once Every week')  
            );  
        return $schedules;
    }
    add_filter('cron_schedules','my_cron_definer');

注册插件激活时间表

register_activation_hook( __FILE__, 'informant_run_on_activation' );

function informant_run_on_activation(){
    if(!wp_next_scheduled('informantweeklynewsletter')){
        wp_schedule_event(time(), 'weekly', 'informantweeklynewsletter');
    }
}

调用我的方法在自定义事件上执行

add_action('informantweeklynewsletter','informant_main_action');

我已经安装了一个用于查看预定cronjob的插件Cron Gui,它正确地列出了我的事件,因为我每两分钟重复一次,cron gui显示正确的结果,即更新时间+2分钟。

但我的方法informant_main_action()无效。我犯的错误是什么。 ?

由于

1 个答案:

答案 0 :(得分:0)

测试cron使用类似mail()的东西.....每小时尝试测试然后每周测试一次。在插件去激活时销毁事件是一个好主意(还有一个主题去激活钩子,如果你需要它可以查找它)所以如果你需要在不改变钩子的情况下进行更改,你可以取消激活插件名称。

add_action('test_event', 'informant_main_action');

function informant_main_action() {
    mail('youremailaddress', 'cron running', 'your cronjob has completed');
}

register_activation_hook( __FILE__, 'informant_run_on_activation' );

function informant_run_on_activation() {
   if(!wp_next_scheduled('test_event')){
      wp_schedule_event(time(), 'hourly', 'test_event');
   }
}

register_deactivation_hook( __FILE__, 'deactivate_cron' );

function deactivate_cron() {
   wp_clear_scheduled_hook( 'monday_event' );
}