Payload plugin that enables scheduled publishing for draft-enabled collections, inspired by wordpress post scheduler.
npm i payload-plugin-scheduler
// payload.config.ts
import { buildConfig } from 'payload/config'
import { ScheduledPostPlugin } from 'payload-plugin-scheduler'
import Pages from './collections/Pages'
import Posts from './collections/Posts'
import Home from './globals/Home'
export default buildConfig({
collections: [Pages, Posts],
globals: [Home],
plugins: [
ScheduledPostPlugin({
collections: ['pages', 'posts'],
globals: ['home'],
interval: 10,
})
]
// ...more config
})
At least one collection / global is required.
An array of collection slugs. All collections must have drafts enabled.
An array of global slugs. All globals must have drafts enabled.
Specify how frequently to check for scheduled posts (in minutes).
This value will also be passed to the DatePicker
component. Defaults to 5 mins.
Custom configuration for the scheduled posts collection that gets merged with the defaults.
In a nutshell, the plugin creates a publish_date
field that it uses to determine whether a pending draft update needs to be scheduled.
Custom Datetime field added to documents in enabled collections.
Includes custom Field
and Cell
components that include schedule status in the client-side UI.
Collection added by the plugin to store pending schedule updates. Can be customized via scheduledPosts
option.
A configurable timer checks for any posts to be scheduled in the upcoming interval window. For each hit, it creates a separate job that's fired at that document's publish_date
(via node-schedule). The idea here is that you can configure your interval window to avoid super long running tasks that are more prone to flaking.
-
This plugin doesn't support Payload 3.0 beta. I intend to update it once 3.0 is stable, but it'll require substantial re-architecting to work in a serverless environment.
-
There's no logic in place to dedupe schedules across multiple instances of a single app (see #9)