阅读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\');
仍然没有结果。代码每分钟都在发送电子邮件。我的代码有什么缺失吗?
最合适的回答,由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()