jeffreyvanrossum/wp-job-scheduler

Handy wrapper to make creating WordPress job scheduling and dispatch a breeze.

0.1.3 2024-03-01 14:35 UTC

This package is auto-updated.

Last update: 2024-10-28 17:22:46 UTC


README

vanrossum.dev Logo

Total Downloads Latest Stable Version License

WP Job Scheduler

🚧 This package is still work in progress

This package is an attempt to make job dispatching and scheduling easier in WordPress.

Inspired by the syntax of Laravel and using Action Scheduler from WooCommerce, for more reliable handeling.

Installation

composer require jeffreyvanrossum/wp-job-scheduler

Usage

Setup

Within your theme or plugin, add:

WPJobScheduler::instance()
    ->projectRootPath(__DIR__)
    ->scheduler(function() {
        ExampleJob::schedule('hourly');
    })
    ->boot();

Dispatching single jobs

ExampleJob::dispatch();

You may pass a callback to do some changes on the job before it is dispatched:

ExampleJob::dispatch(function($job) {
    $job->withDelay(30);
});

You may also pass some initial constructor arguments:

ExampleJob::dispatch(function($job) {
    $job->withDelay(30);
}, ['foo' => 'bar']);

Example Job

class ExampleJob implements Jobable
{
    use IsJob, Schedulable, Dispatchable;

    public function handle()
    {
        // the actual handling of the job
    }

    public function before(): void
    {
        // before the job has been handled
    }

    public function after(): void
    {
        // after the job has been handled
    }

    public function catch(Throwable $e): void
    {
        // do something with exception
    }
}

Contributors

License

MIT. Please see the License File for more information.