从WP-CRON计划事件激发时,WP_QUERY返回空集

时间:2016-08-24 作者:bynicolas

我正在尝试建立一个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();
}    
我的查询返回一个空集,因此基本上不会发送任何内容!对于为什么会发生这种情况以及接下来要测试什么,我已经没有什么想法了

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

好吧,我花了很多时间来调试这个!搜索我使用的$wpdb->queries 随着define( \'SAVEQUERIES\', true ); 调试运行wp cron时进行的查询。

然后我发现,当cron作业运行时,我的查询设置为\'post_status\' => trash! 难怪我没有收到任何错误,事实证明,前几天我在尝试一个特定的查询,而这个函数仍在我的主题中运行functions.php 并且只影响未登录的用户,这会覆盖我的cron查询!

长话短说,与wp cron或wp\\u query(甚至我的代码)无关,请在测试后进行清理(我应该更清楚::facepalm),并使用调试工具帮助您找到罪魁祸首!

相关推荐

通过系统cron触发wp-cron的最有效方式。

我最近决定最好禁用内置的wordpress cron功能,并移动到系统cron,该系统将每隔15分钟激活一次wordpress cron。我想知道哪种方式是最好的,性能方面的区别是什么?我认为这有两种方式:curl http://example.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1 以及cd /var/www/example.com/htdocs; php /var/www/example.com/htdocs/wp-c