136
|
1 |
<?php |
|
2 |
/** |
|
3 |
* WordPress Cron Implementation for hosts, which do not offer CRON or for which |
|
4 |
* the user has not setup a CRON job pointing to this file. |
|
5 |
* |
|
6 |
* The HTTP request to this file will not slow down the visitor who happens to |
|
7 |
* visit when the cron job is needed to run. |
|
8 |
* |
|
9 |
* @package WordPress |
|
10 |
*/ |
|
11 |
|
|
12 |
ignore_user_abort(true); |
|
13 |
|
|
14 |
if ( !empty($_POST) || defined('DOING_AJAX') || defined('DOING_CRON') ) |
|
15 |
die(); |
|
16 |
|
|
17 |
/** |
|
18 |
* Tell WordPress we are doing the CRON task. |
|
19 |
* |
|
20 |
* @var bool |
|
21 |
*/ |
|
22 |
define('DOING_CRON', true); |
|
23 |
|
|
24 |
if ( !defined('ABSPATH') ) { |
|
25 |
/** Setup WordPress environment */ |
|
26 |
require_once('./wp-load.php'); |
|
27 |
} |
|
28 |
|
|
29 |
if ( false === $crons = _get_cron_array() ) |
|
30 |
die(); |
|
31 |
|
|
32 |
$keys = array_keys( $crons ); |
|
33 |
$local_time = time(); |
|
34 |
|
|
35 |
if ( isset($keys[0]) && $keys[0] > $local_time ) |
|
36 |
die(); |
|
37 |
|
|
38 |
foreach ($crons as $timestamp => $cronhooks) { |
|
39 |
if ( $timestamp > $local_time ) |
|
40 |
break; |
|
41 |
|
|
42 |
foreach ($cronhooks as $hook => $keys) { |
|
43 |
|
|
44 |
foreach ($keys as $k => $v) { |
|
45 |
|
|
46 |
$schedule = $v['schedule']; |
|
47 |
|
|
48 |
if ($schedule != false) { |
|
49 |
$new_args = array($timestamp, $schedule, $hook, $v['args']); |
|
50 |
call_user_func_array('wp_reschedule_event', $new_args); |
|
51 |
} |
|
52 |
|
|
53 |
wp_unschedule_event($timestamp, $hook, $v['args']); |
|
54 |
|
|
55 |
do_action_ref_array($hook, $v['args']); |
|
56 |
} |
|
57 |
} |
|
58 |
} |
|
59 |
|
|
60 |
die(); |