我正在练习WordPress的日程安排事件。我正在编写一个功能,可以在事件安排的15个星期后立即向我显示警报。我最终得到了以下代码。
function do_this_in_time() {
echo "<script>alert('');</script>";
}
add_action('my_hook_in_time','do_this_in_time');
wp_schedule_single_event( time() + 15, 'my_hook_in_time');
我知道这会在每次从我的网站加载页面时安排事件,而且我还需要在调度事件之间至少有10分钟的间隔用同一名称,我阅读文档; - )。< / strong>
所以我想说我只加载了一次页面。但我仍然没有得到警报。
我还使用 _get_cron_array()检查了预定的活动,我可以看到我的活动安排如下。
[1449843473] => Array
(
[my_hook_in_time] => Array
(
[40cd750bba9870f18aada2478b24840a] => Array
(
[schedule] =>
[args] => Array
(
)
)
)
)
但它似乎没有开火。我在这里做错了什么?
答案 0 :(得分:2)
您在尝试在加载页面之前回显Javascript。 wp_schedule_single_event
功能会在模板显示之前触发,因此您的文档类型之前会有<script>
标记回显。除此之外,如果其他人在活动安排的那一刻访问您的网站,他将收到警报(如果它会在正确的地方回复),而不是您。
如果你只是想测试你的cron执行,我建议你在服务器的某个文件中记录执行。
我知道每次从我的网站加载页面时都会安排事件 我还需要在调度事件之间至少留出10分钟的差距 同名,我读了文档; - )。
这不完全正确,每次页面加载时,您都会在crontab中堆叠事件,但它们将从 <15秒执行的时间表。这意味着一个用户可以在同一负载上触发多个事件。
例如:
00:00:01 : User visit > Schedule event 1
00:00:02 : User visit > Schedule event 2
00:00:03 : User visit > Schedule event 3
[... no one visit your website in a minute ...]
00:01:00 : Execute events 1, 2 and 3, and schedule event 4