wp_cron()
Run all scheduled cron events whose time has come.
Checks whether there is at least one cron event whose time has come, and runs spawn_cron() which send the request to cron file: /example.com/wp-cron.php.
When calling this function, all the cron events that were planned and which time has come will be initiated.
You can read more about cron in the description of wp_schedule_event() which is used to add new cron events. There are a lot of examples and everything you need to know about cron in WordPress.
This function called by WordPress core automatically on the init event.
if ( ! defined( 'DOING_CRON' ) ) {
add_action( 'init', 'wp_cron' );
}
Basically, you don't need to use this function.
This function will not work, if constant DISABLE_WP_CRON is defined.
Cron is named after a unix program which runs unattended scheduled tasks.
Read more about cron: WP Cron (scheduler) in WordPress
No Hooks.
Returns
null.
- Number — on success — the number of performed events (0 means that there are no events to be executed now).
- false — when no event could be processed.
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 PHP documentation. Use the === operator for testing the return value of this function.
Usage
wp_cron(): void;
Examples
#1 Send an email every hour
You can place this code in, for example, functions.php.
// Schedule an event if it hasn't been scheduled yet
// It's better to do it during plugin/theme activation
if ( ! wp_next_scheduled( 'my_task_hook' ) ) {
wp_schedule_event( time(), 'hourly', 'my_task_hook' );
}
// Add a callback
add_action( 'my_task_hook', 'my_task_function' );
function my_task_function() {
wp_mail( '[email protected]', 'Scheduled email', 'A scheduled email from WordPress.');
} #2 Add a cron event and a custom interval
The code must be added into the functions.php file or in plugin.
add_filter( 'cron_schedules', 'mycron_add_schedule' );
add_action( 'init', 'mycron_add_hook' );
## Schedules an event
function mycron_add_hook(){
if ( ! wp_next_scheduled( 'my_cron_worker_start' ) ) {
wp_schedule_event( time(), 'my_cron_worker', 'my_cron_worker_start' );
}
}
## Adds a custom interval
function mycron_add_schedule(){
$schedules['my_cron_worker'] = array( 'interval' => 60, 'display' => 'My Cron Worker' );
return $schedules;
}
Changelog
| Since 2.1.0 | Introduced. |
| Since 5.1.0 | Return value added to indicate success or failure. |
| Since 5.7.0 | Functionality moved to _wp_cron() to which this becomes a wrapper. |
| Since 6.9.0 | The _wp_cron() callback is moved from wp_loaded to the shutdown action, unless ALTERNATE_WP_CRON is enabled; the function now always returns void. |
wp_cron() wp cron code WP 6.9
function wp_cron(): void {
if ( defined( 'ALTERNATE_WP_CRON' ) && ALTERNATE_WP_CRON ) {
if ( did_action( 'wp_loaded' ) ) {
_wp_cron();
} else {
add_action( 'wp_loaded', '_wp_cron', 20 );
}
} elseif ( doing_action( 'shutdown' ) ) {
_wp_cron();
} else {
add_action( 'shutdown', '_wp_cron' );
}
}