Cron API: Introduce `wp_unschedule_hook()` to clear all events attached to a hook.

This complements `wp_clear_scheduled_hook()`, which only clears events attached with specific arguments.

Props arena, mordauk, jrf.
Fixes #18997.
Built from https://develop.svn.wordpress.org/trunk@40965


git-svn-id: http://core.svn.wordpress.org/trunk@40815 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Sergey Biryukov 2017-06-30 00:22:44 +00:00
parent 1fb8cbe8de
commit 641a4b643f
2 changed files with 25 additions and 2 deletions

View File

@ -191,7 +191,7 @@ function wp_unschedule_event( $timestamp, $hook, $args = array() ) {
}
/**
* Unschedule all events attached to the specified hook.
* Unschedule all events attached to the hook with the specified arguments.
*
* @since 2.1.0
*
@ -221,6 +221,29 @@ function wp_clear_scheduled_hook( $hook, $args = array() ) {
}
}
/**
* Unschedule all events attached to the hook.
*
* Can be useful for plugins when deactivating to clean up the cron queue.
*
* @since 4.9.0
*
* @param string $hook Action hook, the execution of which will be unscheduled.
*/
function wp_unschedule_hook( $hook ) {
$crons = _get_cron_array();
foreach( $crons as $timestamp => $args ) {
unset( $crons[ $timestamp ][ $hook ] );
if ( empty( $crons[ $timestamp ] ) ) {
unset( $crons[ $timestamp ] );
}
}
_set_cron_array( $crons );
}
/**
* Retrieve the next timestamp for an event.
*

View File

@ -4,7 +4,7 @@
*
* @global string $wp_version
*/
$wp_version = '4.9-alpha-40964';
$wp_version = '4.9-alpha-40965';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.