Wordpress:wp-cron没有工作,也没有在日志中给出错误

时间:2016-12-31 13:15:09

标签: php wordpress

这是我在function.php文件中定义的wp-cron,但我没有在错误日志中得到任何结果,该事件在cron列表中但是如果我启动它没有任何反应。 我有define('WP_DEBUG', true); 并在php.ini中的所有级别启用了错误日志

有人知道我在哪里做错了吗?

function cron_daily_whatever() {
  if (!wp_next_scheduled('check_daily_event')) {
    wp_schedule_event(time(),'daily','check_daily_event');
  }
}

function my_do_this_daily() {
    error_log('check');
}

add_action('wp','cron_daily_whatever');
add_action('check_daily_event','my_do_this_daily');

我使用了片段

 file_put_contents(WP_CONTENT_DIR . '/my-debug.txt', "Response: ".$res."\n", FILE_APPEND);

调试它。它现在有效。

2 个答案:

答案 0 :(得分:1)

通过wp-content中的默认WP_DEBUG日志,您应该定义('WP_DEBUG_LOG',TRUE);同样。然后你需要清除你的预定事件(并再次设置),以便今天测试它是否已经运行过一次。请参阅https://codex.wordpress.org/Function_Reference/wp_clear_scheduled_hook

答案 1 :(得分:1)

您似乎在页面级别/主题级别设置/设置了cron?

如果您设置的是插件级别。

add_action( 'my_hourly_event',  'update_db_hourly' );

public static function activate() {
    wp_schedule_event( time(), 'hourly', 'my_hourly_event' );
}

public static function deactivate() {
    wp_clear_scheduled_hook('my_hourly_event');
}

public function update_db_hourly() {

    // 1. Check for a new file
    // 2. If it exists, read it, upload it, delete it
    // 3. Otherwise, do nothing

}

参考:https://tommcfarlin.com/wordpress-cron-jobs/

注意:如果error_log不起作用,可能是由于某些WP_DEBUG_DISPLAY = false标志未正确设置。最好使用以下代码段记录自定义日志记录。

file_put_contents(WP_CONTENT_DIR . '/my-debug.txt', "Response **".$res."**", FILE_APPEND);

此文件将在wp-content文件夹下创建。