从小部件计划cron事件

时间:2010-11-01 作者:Alex

我可以使用wp_schedule_event() 要在小部件中设置cron作业?

我试过了,但没能成功,问题似乎是$hook参数。我试图钩住的函数位于widget类中,所以我猜测WP找不到它。

这两项工作都不是:

wp_schedule_event(time(), \'daily\', \'my_widget_cron\');
wp_schedule_event(time(), \'daily\', array(&$this, \'my_widget_cron\'));
有什么想法吗?

1 个回复
最合适的回答,由SO网友:sorich87 整理而成

wp_schedule_event 将挂钩作为参数,而不是函数。尝试:

wp_schedule_event(time(), \'daily\', \'my_daily_event\');

add_action(\'my_daily_event\', array(&$this, \'my_widget_cron\'));

if ( !wp_next_scheduled( \'my_daily_event\' ) ) {
    wp_schedule_event(time(), \'hourly\', \'my_daily_event\')
}
如果从侧栏中删除小部件,cron仍将继续运行。您可以运行以下代码(在widget类之外)来清除它:

if ( !is_active_widget(\'your_widget_callback_function\') && wp_next_scheduled( \'my_daily_event\' ) ) {
    wp_clear_scheduled_hook(\'my_daily_event\');
}

结束

相关推荐

如何记录插件(Cron)操作?

是否有推荐的方法从插件中记录(失败的)cron操作?例如,我有一个插件,它每小时与外部服务同步一次。我想记录更改了多少,以及同步失败的时间。你有什么建议吗?新的数据库表?这个Log Deprecated Notices 插件使用自定义的帖子类型来实现这一点,但这可能会带来太多的开销?我相信WordPress does not come with a standard logging package?