WordPress.org

Make WordPress Core


Ignore:
Timestamp:
06/30/2017 12:21:49 AM (3 years ago)
Author:
SergeyBiryukov
Message:

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.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/cron.php

    r38357 r40965  
    192192
    193193/**
    194  * Unschedule all events attached to the specified hook.
     194 * Unschedule all events attached to the hook with the specified arguments.
    195195 *
    196196 * @since 2.1.0
     
    220220        }
    221221    }
     222}
     223
     224/**
     225 * Unschedule all events attached to the hook.
     226 *
     227 * Can be useful for plugins when deactivating to clean up the cron queue.
     228 *
     229 * @since 4.9.0
     230 *
     231 * @param string $hook Action hook, the execution of which will be unscheduled.
     232 */
     233function wp_unschedule_hook( $hook ) {
     234    $crons = _get_cron_array();
     235
     236    foreach( $crons as $timestamp => $args ) {
     237        unset( $crons[ $timestamp ][ $hook ] );
     238
     239        if ( empty( $crons[ $timestamp ] ) ) {
     240            unset( $crons[ $timestamp ] );
     241        }
     242    }
     243
     244    _set_cron_array( $crons );
    222245}
    223246
Note: See TracChangeset for help on using the changeset viewer.