wp_next_scheduled()
Retrieve the next timestamp for an event.
Uses: wp_get_scheduled_event()
Used By: wp_schedule_single_event()
1 time — 0.001667 sec (very slow) | 50000 times — 3.12 sec (fast) | PHP 7.2.5, WP 4.9.8
No Hooks.
Return
Int|false
. The Unix timestamp of the next time the event will occur. False if the event doesn't exist.
Usage
wp_next_scheduled( $hook, $args );
- $hook(string) (required)
- Action hook of the event.
- $args(array)
- Array containing each separate argument to pass to the hook's callback function. Although not passed to a callback, these arguments are used to uniquely identify the event, so they should be the same as those used when originally scheduling the event.
Default: empty array
Examples
#1 Checking for a cron task before registering a new one
Usually events are logged when the plugin is activated. But this is not always convenient.
// make sure there is no event before registering a new cron job. if ( ! wp_next_scheduled( 'my_hourly_event' ) ) { wp_schedule_event( time(), 'hourly', 'my_hourly_event' ); } // add a function to the specified hook add_action( 'my_hourly_event', 'do_this_hourly' ); function do_this_hourly() { // do something every hour }
See wp_schedule_event() for other examples.
#2 Note the $args parameter!
Not specifying the $args parameter in wp_next_scheduled() but having $args for wp_schedule_event() will cause many events to be scheduled (instead of just one).
Bad Example:
// This will always be false if ( ! wp_next_scheduled( 'myevent' ) ) { wp_schedule_event( time(), 'daily', 'myevent', array( false ) ); }
Good Example:
$args = array( false ); if ( ! wp_next_scheduled( 'myevent', $args ) ) { wp_schedule_event( time(), 'daily', 'myevent', $args ); }
#3 Be careful when using arguments!
WordPress doesn’t compare arguments 1:1 so you have to pay attention what type these are.
It’s because WP generates a hash out of them: md5( serialize( $args ) )
.
So next check will not work properly and many events will be added but not only one:
if( ! wp_next_scheduled( 'action_hook', array( '123' ) ) ){ wp_schedule_event( time(), 'daily', 'action_hook', array( 123 ) ); }
Changelog
Since 2.1.0 | Introduced. |
wp_next_scheduled() wp next scheduled code WP 6.7.1
function wp_next_scheduled( $hook, $args = array() ) { $next_event = wp_get_scheduled_event( $hook, $args ); if ( ! $next_event ) { return false; } return $next_event->timestamp; }