WP_Schedule_Event()每天设置,但每秒处理一次

时间:2011-01-26 作者:ariefbayu

阅读wp_schedule_event() 文档为我提供了如下代码:

add_action(\'cr_paid_link_manager_generate_expiring_link_email_action\',\'cr_paid_link_manager_generate_expiring_link_email\');
wp_schedule_event(time(), \'daily\', \'cr_paid_link_manager_generate_expiring_link_email_action\');
问题是,cr_paid_link_manager_generate_expiring_link_email() 是在每次页面加载时生成的,看起来是这样的。此代码应该每天只发送一次电子邮件。

我尝试设置的第一个参数wp_schedule_event()$timestamp_start:

$timestamp_start = \'2011-01-26 00:00:00\';
add_action(\'cr_paid_link_manager_generate_expiring_link_email_action\',\'cr_paid_link_manager_generate_expiring_link_email\');
wp_schedule_event($timestamp_start, \'daily\', \'cr_paid_link_manager_generate_expiring_link_email_action\');
仍然没有结果。代码每分钟都在发送电子邮件。我的代码有什么缺失吗?

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

wp\\u schedule\\u event()代码放在哪里?我的猜测是,在某个地方,它会导致它在每次页面加载时运行,导致操作被安排多次(比如可能您刚刚将其丢弃在函数中。php?)。

您只需要安排一次操作。最简单的方法是在激活插件时执行。尝试以下操作:

function wpsx_7780_myplugin_init() {

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

}
register_activation_hook( __FILE__, \'wpsx_7780_myplugin_init\' );
add_action(\'cr_paid_link_manager_generate_expiring_link_email_action\',\'cr_paid_link_manager_generate_expiring_link_email\');
然后停用并重新激活插件。这样,事件只调度一次,但每次加载页面时都会添加操作。

EDIT: 我还应该注意到,您可能需要清除使用创建的所有现有事件wp_clear_scheduled_hook()

结束

相关推荐

WP-cron.php-如何删除WP的Cron瞬变?

我有一个Wordpress网络,我的任务是禁用WP Cron并将其替换为Apache Cron。我已经设置了一个PHP脚本,当Apache Cron调用该脚本时,它将在网络下的所有站点中循环,并向该站点的wp Cron发出请求。php页面,从而执行其cron。我想使用Wordpress的瞬态特性来限制我的PHP脚本,因为Wordpress限制了自己的cron。然而,当我深入研究代码时,我看到doing\\u cron瞬态已设置(在cron.php#217中),但从未取消设置。瞬态是否一直未设置,或者Wor