WordPress Version: 6.3
/**
* Runs scheduled callbacks or spawns cron for all scheduled events.
*
* Warning: This function may return Boolean FALSE, but may also return a non-Boolean
* value which evaluates to FALSE. For information about casting to booleans see the
* {@link https://www.php.net/manual/en/language.types.boolean.php PHP documentation}. Use
* the `===` operator for testing the return value of this function.
*
* @since 5.7.0
* @access private
*
* @return int|false On success an integer indicating number of events spawned (0 indicates no
* events needed to be spawned), false if spawning fails for one or more events.
*/
function _wp_cron()
{
// Prevent infinite loops caused by lack of wp-cron.php.
if (str_contains($_SERVER['REQUEST_URI'], '/wp-cron.php') || defined('DISABLE_WP_CRON') && DISABLE_WP_CRON) {
return 0;
}
$crons = wp_get_ready_cron_jobs();
if (empty($crons)) {
return 0;
}
$gmt_time = microtime(true);
$keys = array_keys($crons);
if (isset($keys[0]) && $keys[0] > $gmt_time) {
return 0;
}
$schedules = wp_get_schedules();
$results = array();
foreach ($crons as $timestamp => $cronhooks) {
if ($timestamp > $gmt_time) {
break;
}
foreach ((array) $cronhooks as $hook => $args) {
if (isset($schedules[$hook]['callback']) && !call_user_func($schedules[$hook]['callback'])) {
continue;
}
$results[] = spawn_cron($gmt_time);
break 2;
}
}
if (in_array(false, $results, true)) {
return false;
}
return count($results);
}