我正在尝试在插件中设置单独的一次性计划事件。无论我做什么,我似乎都无法让事件发生。我正在使用Cron视图plugin 查看队列中的内容,并完全按计划添加和删除事件。但是,我从来没有收到我在操作的目标函数中设置要发送的电子邮件(只是为了测试事件,稍后会有更多)。我已经在计划的事件之外测试了该功能,它确实有效。以下是一些代码:
GLOBAL $new_workshop_id;
$new_workshop_id = $wpdb->insert_id;
function send_reminders() {
GLOBAL $new_workshop_id;
wp_mail(\'[email protected]\', \'Automatic ID: \'.$new_workshop_id, \'here it is!\');
}
if (!wp_next_scheduled(\'send_reminder_emails_\'.$new_workshop_id)) {
wp_schedule_single_event( time()+30, \'send_reminder_emails_\'.$new_workshop_id );
}
do_action( \'send_reminder_emails_\'.$new_workshop_id );
add_action( \'send_reminder_emails_\'.$new_workshop_id, \'send_reminders\' );
我怀疑do\\u acton的位置和函数本身,
send_reminders()
. 上面的代码在一些检查POST变量的if语句中,因此CRON作业可能无法访问该函数-那么我应该将该函数放在哪里?我已经在插件文件的顶部进行了尝试。从我读到的内容来看,do\\u action应该调用该函数并在放置do\\u action的任何位置执行它,但我想我需要知道放置在哪里
send_reminders()
首先,让它可以通过cron作业或do\\u操作访问。
提前感谢您的任何意见!
最合适的回答,由SO网友:Denis de Bernardy 整理而成
cron-arg的用法看起来很奇怪。在调用函数时,插入id将返回垃圾。
出于同样的原因,我认为最好总是在insert上使用id参数安排它,如果这个if用于日志记录。否则,基本上会限制日志。
最后,您确定wp\\u mail()工作正常吗?