CRON Events Service
The CRON Events Service is again a multi-handler service that exhibits a
runaction method. A CRON event is an event that should happen at a particular point in time -- like literally when the real clocks of the world reach a certain point. This service is designed to work with such events and it provides the following public methods:
The method names should be pretty self-explanatory. A single event is one that should happen exactly once at a given point in time while a recurring event is one that should happen with some regularity, like every hour or every day. If you're unfamiliar with the concept, we recommend reading the WordPress Developer documentation on this topic.
Setting up a CRON event requires you to make a few conscious decisions, but we've tried to simplify the process by providing some helpful defaults. For example, for both types of events you need to provide a UNIX timestamp as to when the first (and maybe only) event should take place. If you simply omit this value, the service will default to next midnight based on the website's timezone.
Similarly, for recurring events you need to provide a recurrence value. WordPress provides some default values like
weekly, but that might not cover your specific use-case. To help with this, you can simply make use of our
CronIntervalsEnumenum. This will provide you with more recurrence values which, when used together with our service, will automagically handle everything in the background for WordPress to understand what you mean.
Obviously, being a handler service, the service expects to have at least one handler registered. It accepts handlers implementing the
CronEventsHandlerInterfaceinterface. There are two handlers that the module comes pre-packaged with, and one of them gets registered by default (so if you omit to provide any handler whatsoever, there will be a default one set up automagically).
Just like with all the services so far, the recommended method is using the setup action trait,
SetupCronEventsTrait. You don't have to though and you're free to use any of the other traits and interfaces provided in the CRON Events namespace here.