Make WordPress Core


Ignore:
Timestamp:
06/30/2017 12:21:49 AM (9 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.