strapi-plugin-publisher
A plugin for Strapi that provides the ability to easily schedule publishing and unpublishing of any content type.
Requirements
The installation requirements are the same as Strapi itself and can be found in the documentation on the Quick Start page in the Prerequisites info card.
Supported Strapi versions
- v4.x.x
NOTE: While this plugin may work with the older Strapi versions, they are not supported, it is always recommended to use the latest version of Strapi.
Installation
npm install strapi-plugin-publisher
or
yarn add strapi-plugin-publisher
Configuration
Enable the plugin
The plugin configuration is stored in a config file located at ./config/plugins.js. If this file doesn't exists, you will need to create it.
A sample configuration
module.exports = ({ env }) => ({
// ..
'publisher': {
enabled: true,
config: {
hooks: {
beforePublish: async ({ strapi, uid, entity }) => {
console.log('beforePublish');
},
afterPublish: async ({ strapi, uid, entity }) => {
console.log('afterPublish');
},
beforeUnpublish: async ({ strapi, uid, entity }) => {
console.log('beforeUnpublish');
},
afterUnpublish: async ({ strapi, uid, entity }) => {
console.log('afterUnpublish');
},
},
},
},
// ..
});
The Complete Plugin Configuration Object
Property | Description | Type | Default | Required |
---|---|---|---|---|
actions | Settings associated with any actions. | Object | {} | No |
actions.syncFrequency | The frequency to check for actions to run. It is a cron expression | String | '*/1 * * * *' | No |
components | Settings associated with any of the plugins components | Object | {} | No |
components.dateTimePicker | Settings associated with the DateTimePicker component used to set action times | Object | {} | No |
components.dateTimePicker.step | The step between the numbers displayed for the time section of the DateTimePicker | Number | 1 | No |
hooks.beforePublish | An async function that runs before a content type is published | Function | () => {} | No |
hooks.afterPublish | An async function that runs after a content type is published | Function | () => {} | No |
hooks.beforeUnpublish | An async function that runs before a content type is un-published | Function | () => {} | No |
hooks.afterUnpublish | An async function that runs after a content type is un-published | Function | () => {} | No |
Enable server cron
The cron.enabled
configuration option needs to be set to true in Server Configuration for the plugin to work.
Usage
Once the plugin has been installed, configured and enabled a Publisher
section will be added to the informations
section of the edit view for all content types (single + collection) that have draftAndPublish
enabled. The Publisher
section will provide the ability to schedule publishing and unpublishing of the content type. The content type publication status is checked every minute.
If the Publisher section does not appear in the admin after the plugin is enabled then a clean rebuild of the admin is required. This can be done by deleting the generated
.cache
andbuild
folders and then re-running thedevelop
command.
Single Content Type
Collection Content Type
Adding a (un)publish date
Navigate to the entity record that should be (un)published, under the informations
section click the Add a (un)publish date
button. Enter in the date and click save, the entity record will then be (un)published at the specified time.
Editing a (un)publish date
Navigate to the entity record that requires its date changed, under the informations
section click the Edit (un)publish date
button. Enter in the new date and click save.
Deleting a (un)publish date
Navigate to the entity record that contains the date that should be removed, under the informations
section click the Delete (un)publish date
button.
Bugs
If any bugs are found please report them as a Github Issue