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/tests/phpunit/tests/cron.php

    r39554 r40965  
    187187        wp_clear_scheduled_hook($multi_hook, $multi_args);
    188188        $this->assertFalse( wp_next_scheduled($multi_hook, $multi_args) );
    189 
     189    }
     190
     191    /**
     192     * @ticket 18997
     193     */
     194    function test_unschedule_hook() {
     195        $hook = __FUNCTION__;
     196        $args = array( rand_str() );
     197
     198        // schedule several events with and without arguments.
     199        wp_schedule_single_event( strtotime( '+1 hour' ), $hook );
     200        wp_schedule_single_event( strtotime( '+2 hour' ), $hook );
     201        wp_schedule_single_event( strtotime( '+3 hour' ), $hook, $args );
     202        wp_schedule_single_event( strtotime( '+4 hour' ), $hook, $args );
     203
     204        // make sure they're returned by wp_next_scheduled().
     205        $this->assertTrue( wp_next_scheduled( $hook ) > 0 );
     206        $this->assertTrue( wp_next_scheduled( $hook, $args ) > 0 );
     207
     208        // clear the schedule and make sure it's gone.
     209        wp_unschedule_hook( $hook );
     210        $this->assertFalse( wp_next_scheduled( $hook ) );
    190211    }
    191212
Note: See TracChangeset for help on using the changeset viewer.