我正在尝试建立一个wp cron时间表,以便每小时检查是否需要向满足特定标准的用户发送电子邮件提醒。
我的设置是这样的
我有一个reminders
类,该类负责为满足指定条件的CPT执行所有WP查询筛选,并设置我的电子邮件,在发送电子邮件后更新我的帖子等在那门课上,我的_construct()
要添加到my的函数public function do_reminders()
到我预定的活动我的计划事件已在插件激活时添加reminders
连接到的对象init
因此构造可以添加do_reminders
我正在使用的计划挂钩的函数Core Control 插件以确保do_reminders
函数已连接到我的计划事件,它是
The Issue
当计划的事件运行时,它不会发出它应该发出的提醒。
如果我测试do_reminders
通过在以下位置运行init
它可以工作,但当schedule事件触发它时,我的查询似乎返回一个空集。
所以我的问题是,如何调试这个?这里到底发生了什么?是否在可访问查询对象之前触发计划事件?
我试图理解,如果我直接从“init”这样调用函数,为什么我的函数会工作
add_action( \'init\', \'my_test_check\');
function my_test_check(){
$reminders = new MY_Reminders();
$reminders->do_reminders();
}
但是当它被这样称呼的时候
add_action( \'my_scheduled_hook\', \'my_test_check\');
function my_test_check(){
$reminders = new MY_Reminders();
$reminders->do_reminders();
}
我的查询返回一个空集,因此基本上不会发送任何内容!对于为什么会发生这种情况以及接下来要测试什么,我已经没有什么想法了
最合适的回答,由SO网友:bynicolas 整理而成
好吧,我花了很多时间来调试这个!搜索我使用的$wpdb->queries
随着define( \'SAVEQUERIES\', true );
调试运行wp cron时进行的查询。
然后我发现,当cron作业运行时,我的查询设置为\'post_status\' => trash
! 难怪我没有收到任何错误,事实证明,前几天我在尝试一个特定的查询,而这个函数仍在我的主题中运行functions.php
并且只影响未登录的用户,这会覆盖我的cron查询!
长话短说,与wp cron或wp\\u query(甚至我的代码)无关,请在测试后进行清理(我应该更清楚::facepalm),并使用调试工具帮助您找到罪魁祸首!