# Run a Task Later Helper Function

> Adds a wpide_run_later() helper that schedules any hook to run once after a delay, without creating duplicates, so slow work like sending a report or calling an API can leave the page request.

- Type: PHP
- Runs: Run everywhere
- Category: [Developer](https://wpide.com/library/category/developer/)
- Tags: cron, helper, background
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/cron-run-later-helper/

## Code

```php
if ( ! function_exists( 'wpide_run_later' ) ) {
    /**
     * Schedules $hook to run once after $delay seconds with $args.
     * Returns true when scheduled, false if the same task is already queued.
     */
    function wpide_run_later( $hook, $delay = 60, $args = array() ) {
        $args = array_values( (array) $args );

        if ( wp_next_scheduled( $hook, $args ) ) {
            return false;
        }

        return true === wp_schedule_single_event( time() + max( 1, (int) $delay ), $hook, $args, true );
    }
}
```

## Notes

Example wpide_run_later( 'my_send_report', 5 * MINUTE_IN_SECONDS, array( $order_id ) ), then add_action( 'my_send_report', ... ) to do the work.

## How to use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Run a Task Later Helper Function" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
