我刚刚找到我问题的答案stackoverflow...我想我会把答案抄到这里,以备将来参考,因为WP的人可能更倾向于看这里。
什么时候WP_Cron 激发计划作业,它通过调用wp_remote_post(). 这个答案的诀窍是cron_request 并添加XDEBUG_SESSION_START=idekey
查询参数,如中所示
add_action (\'cron_request\', \'wpse_cron_add_xdebug_session_start\', 10, 2) ;
function
wpse_cron_add_xdebug_session_start ($args, $doing_cron)
{
$args[\'url\'] = add_query_arg (array (\'XDEBUG_SESSION_START\' => \'ECLIPSE_DBGP\'), $args[\'url\']) ;
return ($args) ;
}
这很有魅力,我调试了cron函数。
由于我的迫切需要,我想要一个更普遍的解决方案。。。在其中,我不必硬编码特定的IDE密钥,这就是我想到的:
add_action (\'cron_request\', \'wpse_cron_add_xdebug_cookie\', 10, 2) ;
/**
* Allow debugging of wp_cron jobs
*
* @param array $cron_request_array
* @param string $doing_wp_cron
*
* @return array $cron_request_array with the current XDEBUG_SESSION cookie added if set
*/
function
wpse_cron_add_xdebug_cookie ($cron_request_array, $doing_wp_cron)
{
if (empty ($_COOKIE[\'XDEBUG_SESSION\'])) {
return ($cron_request_array) ;
}
if (empty ($cron_request_array[\'args\'][\'cookies\'])) {
$cron_request_array[\'args\'][\'cookies\'] = array () ;
}
$cron_request_array[\'args\'][\'cookies\'][\'XDEBUG_SESSION\'] = $_COOKIE[\'XDEBUG_SESSION\'] ;
return ($cron_request_array) ;
}
我希望这能帮助其他有同样问题的人。