{"id":56264,"date":"2022-12-30T15:29:31","date_gmt":"2022-12-30T09:59:31","guid":{"rendered":"https:\/\/www.tothenew.com\/blog\/?p=56264"},"modified":"2023-01-02T10:00:00","modified_gmt":"2023-01-02T04:30:00","slug":"content-moderation-and-workflow-with-email-notification-in-drupal-9","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/content-moderation-and-workflow-with-email-notification-in-drupal-9\/","title":{"rendered":"Content Moderation and Workflow with Email Notification in Drupal 9"},"content":{"rendered":"<p>Creating editorial workflow using content moderation is used to speed up the publishing process. Imagine a website has 10 content types, hundreds of contents for each content type, and daily contents are updated or added by a single admin user who has the publish and unpublish permission. So admin user can verify and publish each content one by one, which is time-consuming. So publishing process speed will be reduced since one user is creating, updating, verifying, and publishing the content.<\/p>\n<p>Please note the below points before implementing content moderation and workflow in Drupal. We need to have workflow\/content moderation only if we have the below requirements.<\/p>\n<ul>\n<li>Multiple content authors are uploading content on your website that needs to be reviewed before it gets published.<\/li>\n<li>You\u2019re managing a team of multiple admins with different user roles.<\/li>\n<li>Each moderator knows his\/her role in the publishing chain.<\/li>\n<\/ul>\n<p>if we have content authors with the same role as admin, we don\u2019t need to configure workflow\/content moderation. In this case, the publishing process will slow down. The publishing process includes a node in the draft reviewed by another or the same user and, after the review, approved by another user and then published.<\/p>\n<p>So here, one node is going through different states before getting published. We can say below are the states of this node.<\/p>\n<ul>\n<li>Draft<\/li>\n<li>Review<\/li>\n<li>Ready to Publish<\/li>\n<li>Published<\/li>\n<li>Archive<\/li>\n<\/ul>\n<p>In order to achieve content moderation in Drupal 9, Drupal 9 has a core Content Moderation module that works in conjunction with the Workflows module to easily create and manage an editorial workflow using different states and transitions.<\/p>\n<p>The Content moderation module allows you to:<\/p>\n<ul>\n<li>Create a Draft (The first state is not published)<\/li>\n<li>Have different states than just published and unpublished.<\/li>\n<li>Change the states.<\/li>\n<li>Have granular permission control for every transition and state.<\/li>\n<li>Select the content types that you want to apply to the workflow.<\/li>\n<\/ul>\n<p>The Workflows module defines a set of states and transitions that are then attached to content by the Content moderation module. A \u201cstate\u201d is the current condition that your content is in (Draft, Unpublished, Review, Ready To Publish, Published, Archive). A \u201ctransition\u201d is the process of moving content from one state to another (Needs work, Needs review, Publish).<\/p>\n<h2 style=\"text-align: center;\"><strong>Configuring Content Moderation<\/strong><\/h2>\n<p>First, enable your core modules, Content moderation module, and Workflow module. To enable the module, go to Extend, select modules, and Click on Install.<br \/>\n<img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56294 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/1.WorkflowModule-1-1024x252.png\" alt=\"\" width=\"625\" height=\"154\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/1.WorkflowModule-1-1024x252.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/1.WorkflowModule-1-300x74.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/1.WorkflowModule-1-768x189.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/1.WorkflowModule-1-1536x378.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/1.WorkflowModule-1-624x154.png 624w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/1.WorkflowModule-1.png 1800w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><br \/>\n<img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56295 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/2.CMmodule-1024x249.png\" alt=\"\" width=\"625\" height=\"152\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/2.CMmodule-1024x249.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/2.CMmodule-300x73.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/2.CMmodule-768x187.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/2.CMmodule-1536x374.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/2.CMmodule-624x152.png 624w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/2.CMmodule.png 1827w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><br \/>\nOnce the module has been enabled, You will find a view &#8220;Moderated content view&#8221; to check and edit the status of all your content &#8211; moderation state, content revisions, author, content type, etc. To find it, go to Content -&gt; Moderated Content tab.<\/p>\n<p>Now go to Configuration -&gt; Workflow -&gt; Workflows.<\/p>\n<p>Here, a default workflow called \u201cEditorial\u201d gets created when you enable the module. You can edit the existing \u201cEditorial\u201d workflow or create a new workflow by clicking on Add Workflow.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56285 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/3-2.png\" alt=\"\" width=\"850\" height=\"360\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/3-2.png 850w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/3-2-300x127.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/3-2-768x325.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/3-2-624x264.png 624w\" sizes=\"(max-width: 850px) 100vw, 850px\" \/><\/p>\n<h3><strong>Creating a new workflow<\/strong><\/h3>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56288 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/4-2.png\" alt=\"\" width=\"850\" height=\"360\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/4-2.png 850w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/4-2-300x127.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/4-2-768x325.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/4-2-624x264.png 624w\" sizes=\"(max-width: 850px) 100vw, 850px\" \/><\/p>\n<p>Once you have created a new workflow, you will see various states and transitions that you can configure and edit. You can also create your own state or transition if your team requires more flexibility or steps. There\u2019s also the option for you to choose the content type to which you want to apply this workflow.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56290 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/Edit-notification-_-Demo-Application-Drupal-950x1024.png\" alt=\"\" width=\"625\" height=\"674\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/Edit-notification-_-Demo-Application-Drupal-950x1024.png 950w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/Edit-notification-_-Demo-Application-Drupal-278x300.png 278w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/Edit-notification-_-Demo-Application-Drupal-768x828.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/Edit-notification-_-Demo-Application-Drupal-1425x1536.png 1425w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/Edit-notification-_-Demo-Application-Drupal-624x672.png 624w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/Edit-notification-_-Demo-Application-Drupal.png 1842w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p>Defining a new Workflow<br \/>\n<strong>Label:<\/strong> The name of the Workflow.<br \/>\n<strong>States:<\/strong> You can add a new state by clicking on the \u201cAdd a new state\u201d button like &#8220;Review&#8221;, or \u201cReady to Publish\u201d. You can also edit an existing state. You can add multiple states in states section.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56296 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/6.States-1024x319.png\" alt=\"\" width=\"625\" height=\"195\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/6.States-1024x319.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/6.States-300x93.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/6.States-768x239.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/6.States-1536x478.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/6.States-624x194.png 624w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/6.States.png 1803w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56297 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/7.AddStates-1024x545.png\" alt=\"\" width=\"625\" height=\"333\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/7.AddStates-1024x545.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/7.AddStates-300x160.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/7.AddStates-768x409.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/7.AddStates-1536x817.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/7.AddStates-624x332.png 624w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/7.AddStates.png 1842w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p><strong>Transitions:<\/strong> You can add a new transition by clicking on the \u201cAdd a new transition\u201d button. For Example Transition from Ready to Review, Ready to Publish<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56298 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/8.Transitions-1024x395.png\" alt=\"\" width=\"625\" height=\"241\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/8.Transitions-1024x395.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/8.Transitions-300x116.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/8.Transitions-768x296.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/8.Transitions-1536x593.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/8.Transitions-624x241.png 624w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/8.Transitions.png 1798w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p>While adding a new transition, you can provide a label for each transition and decide from state to state. See below how a transition add screen looks.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56299 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/9.Addtransition-1024x545.png\" alt=\"\" width=\"625\" height=\"333\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/9.Addtransition-1024x545.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/9.Addtransition-300x160.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/9.Addtransition-768x409.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/9.Addtransition-1536x817.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/9.Addtransition-624x332.png 624w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/9.Addtransition.png 1842w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p>Here you can see you can select multiple states for transition. Click the save button. So this transition will be listed in your transitions section.<\/p>\n<p><strong>This workflow applies to:<\/strong> You can choose to which entity types the workflow should apply. For example, Block types, Media types, Content, etc.<br \/>\nAssign to content type<br \/>\n<img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56300 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/10.Assign-1024x195.png\" alt=\"\" width=\"625\" height=\"119\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/10.Assign-1024x195.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/10.Assign-300x57.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/10.Assign-768x146.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/10.Assign-1536x292.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/10.Assign-624x119.png 624w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/10.Assign.png 1813w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p>Click select button and add content types\/or custom blocks.<br \/>\n<img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56301 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/11.SelectContentPopUp-824x1024.png\" alt=\"\" width=\"625\" height=\"777\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/11.SelectContentPopUp-824x1024.png 824w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/11.SelectContentPopUp-241x300.png 241w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/11.SelectContentPopUp-768x955.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/11.SelectContentPopUp-1236x1536.png 1236w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/11.SelectContentPopUp-1647x2048.png 1647w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/11.SelectContentPopUp-624x776.png 624w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/11.SelectContentPopUp.png 1842w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p><strong>Default Moderation State:<\/strong> Here, you can choose the default moderation state when we create new content.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56302 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/12.Default-1024x545.png\" alt=\"\" width=\"625\" height=\"333\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/12.Default-1024x545.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/12.Default-300x160.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/12.Default-768x409.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/12.Default-1536x817.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/12.Default-624x332.png 624w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/12.Default.png 1842w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<h3>Users &amp; Permissions<\/h3>\n<p>You will probably allow people with roles other than administrator to participate in the workflow. To achieve this, you will need to set up the proper permission schema at People &gt; Permissions.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56303 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/13.UserPermission-1024x649.png\" alt=\"\" width=\"625\" height=\"396\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/13.UserPermission-1024x649.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/13.UserPermission-300x190.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/13.UserPermission-768x487.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/13.UserPermission-1536x973.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/13.UserPermission-624x395.png 624w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/13.UserPermission.png 1842w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p>Permission control example for a Workflow content type<\/p>\n<p>The schema in the image above is centered around three roles; Content Editor, Reviewer, and Publisher.<\/p>\n<p>In this example,<br \/>\n<strong>* Content Editor<\/strong> can create, edit, and save content in the <strong>draft<\/strong> <strong>state<\/strong> or send for review in the <strong>review state<\/strong>, but not publish content.<\/p>\n<p><strong>* Reviewer<\/strong> can review content and have two options<br \/>\n1. Can change the state from <strong>Review<\/strong> <strong>state<\/strong> to <strong>Ready To Publish<\/strong>\u00a0<strong>state<\/strong><br \/>\n2 Can change state from <strong>Review state<\/strong> to <strong>Draft state<\/strong> for improvement<\/p>\n<p>Now, if content in &#8220;<strong>Ready to Publish<\/strong>&#8221; <strong>state<\/strong> then <strong>Publisher<\/strong> will change its state to <strong>Published<\/strong>.<\/p>\n<p>Be sure to grant &#8216;View the latest version&#8217; and subsequently &#8216;View own unpublished content&#8217; and &#8216;View any unpublished content&#8217; to Content Editor, Reviewer, and Publisher. Otherwise, these roles will not be able to view their latest changes.<\/p>\n<h3>Email Notification<\/h3>\n<p>Now on each step or transition, you need an email notification. For that, we have to install contribute module &#8220;<strong>Content Moderation Notifications<\/strong>.&#8221;<br \/>\nhttps:\/\/www.drupal.org\/project\/content_moderation_notifications<\/p>\n<p>Content Moderation Notifications modules allow notifications to be sent to all users of a particular role or to the content&#8217;s author when a piece of content is transitioned from one state to another via the core&#8217;s content_moderation module.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56304 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/14.Email-Notification-1024x337.png\" alt=\"\" width=\"625\" height=\"206\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/14.Email-Notification-1024x337.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/14.Email-Notification-300x99.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/14.Email-Notification-768x253.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/14.Email-Notification-1536x506.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/14.Email-Notification-624x206.png 624w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/14.Email-Notification.png 1782w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p>Enable the module and Go to the configuration link &#8211; \/admin\/config\/workflow\/notifications<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56305 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/15.AddEmailNotification-917x1024.png\" alt=\"\" width=\"625\" height=\"698\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/15.AddEmailNotification-917x1024.png 917w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/15.AddEmailNotification-269x300.png 269w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/15.AddEmailNotification-768x857.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/15.AddEmailNotification-1376x1536.png 1376w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/15.AddEmailNotification-1835x2048.png 1835w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/15.AddEmailNotification-624x696.png 624w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/15.AddEmailNotification.png 1842w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p>You can add notifications by following the steps:<\/p>\n<p>1. <strong>Label:<\/strong> The label for this notification.<br \/>\n2. <strong>Workflow:<\/strong> Select the workflow on which you want to apply notifications.<br \/>\n3. <strong>Transitions:<\/strong> Select transitions on which you need to trigger a notification.<br \/>\n4. <strong>Roles:<\/strong> Selecting roles will send notifications to all users with selected roles. This is not mandatory.<br \/>\n5. <strong>Email the author:<\/strong> Send notifications to the current author of the content. This is not mandatory.<br \/>\n6. <strong>Disable the site email address:<\/strong> Do not send notifications to the site email address. This is not mandatory.<br \/>\n7. <strong>Adhoc email addresses:<\/strong> Send notifications to these email addresses. Extra emails. This is not mandatory.<br \/>\n8. <strong>Email Subject:<\/strong> You can set the proper subjects of each mail by using Twig Templating codes.<br \/>\n9. <strong>Email Body:<\/strong> You can set the body of the email by using Twig Templating codes.<\/p>\n<p>After setting notifications on each transition, your list will be like the below screenshot.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56306 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/16.FinalNotifications-1024x511.png\" alt=\"\" width=\"625\" height=\"312\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/16.FinalNotifications-1024x511.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/16.FinalNotifications-300x150.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/16.FinalNotifications-768x383.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/16.FinalNotifications-1536x766.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/16.FinalNotifications-624x311.png 624w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/16.FinalNotifications.png 1842w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<h3>Example of Content Moderation through Workflow Content Type<\/h3>\n<p>The steps are as follows:<\/p>\n<p>1. Author creates a new node of workflow content type.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56257 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/17-1.png\" alt=\"\" width=\"850\" height=\"360\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/17-1.png 850w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/17-1-300x127.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/17-1-768x325.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/17-1-624x264.png 624w\" sizes=\"(max-width: 850px) 100vw, 850px\" \/><\/p>\n<p>2. Author saves the content in Draft because the article is not ready to be published yet.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-56258\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/18-1-300x127.png\" alt=\"\" width=\"300\" height=\"127\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/18-1-300x127.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/18-1-768x325.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/18-1-624x264.png 624w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/18-1.png 850w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>3. Once the Author completes writing the article, they will change the state from Draft to Review. Notification mail will be trigger.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56259 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/19-1.png\" alt=\"\" width=\"850\" height=\"360\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/19-1.png 850w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/19-1-300x127.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/19-1-768x325.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/19-1-624x264.png 624w\" sizes=\"(max-width: 850px) 100vw, 850px\" \/><\/p>\n<p>4. The Content Reviewer reviews the content; if everything is okay, they will change the state from &#8220;Ready for Review&#8221; to &#8220;Ready to Publish&#8221;. Notification mail will be triggered.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56260 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/20-1.png\" alt=\"\" width=\"850\" height=\"360\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/20-1.png 850w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/20-1-300x127.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/20-1-768x325.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/20-1-624x264.png 624w\" sizes=\"(max-width: 850px) 100vw, 850px\" \/><\/p>\n<p>5. If the Content needs work and is not ready to be published, he will change the state from Review to Draft. Notification mail will be triggered.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56261 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/21-1.png\" alt=\"\" width=\"850\" height=\"360\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/21-1.png 850w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/21-1-300x127.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/21-1-768x325.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/21-1-624x264.png 624w\" sizes=\"(max-width: 850px) 100vw, 850px\" \/><\/p>\n<p>6. The Publisher publishes the content. They change the moderation state of the content from Ready To Publish to Published. Notification mail will be triggered.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56262 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/22-1.png\" alt=\"\" width=\"850\" height=\"360\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/22-1.png 850w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/22-1-300x127.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/22-1-768x325.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/22-1-624x264.png 624w\" sizes=\"(max-width: 850px) 100vw, 850px\" \/><\/p>\n<p>7. If the content is no longer to use, then the Publisher can also change the state of published content from Published state to Archive state. Notification mail will be triggered.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56263 size-medium\" src=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/23-1-300x127.png\" alt=\"\" width=\"300\" height=\"127\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2022\/12\/23-1-300x127.png 300w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/23-1-768x325.png 768w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/23-1-624x264.png 624w, \/blog\/wp-ttn-blog\/uploads\/2022\/12\/23-1.png 850w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>This example shows a simple editorial workflow of a workflow content type. You can also have a more complex and rich workflow based on your business requirements.<\/p>\n<div class=\"ap-custom-wrapper\"><\/div><!--ap-custom-wrapper-->","protected":false},"excerpt":{"rendered":"<p>Creating editorial workflow using content moderation is used to speed up the publishing process. Imagine a website has 10 content types, hundreds of contents for each content type, and daily contents are updated or added by a single admin user who has the publish and unpublish permission. So admin user can verify and publish each [&hellip;]<\/p>\n","protected":false},"author":1511,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":352},"categories":[3602],"tags":[4862],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/56264"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/1511"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=56264"}],"version-history":[{"count":5,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/56264\/revisions"}],"predecessor-version":[{"id":56310,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/56264\/revisions\/56310"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=56264"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=56264"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=56264"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}