Post Lockdown

Description

Your homepage. Your contact page. The landing page that took three weeks to sign off. One accidental click from a contributor
or a well-meaning editor and it’s in the trash – or worse, gone for good.

Post Lockdown puts your site-critical content out of reach. Choose which posts and pages matter, and Post Lockdown stops
non-admin users from trashing or deleting them – no custom code, no role editor, no rebuilding permissions from scratch.

Two levels of safety

  • Protected – the post can still be edited, but it can’t be trashed, deleted, or unpublished. Editors keep working; the page stays live.
  • Locked – the post can’t be edited, trashed or deleted at all. Use it for content that must not change.

Set it up in under a minute

Post Lockdown adds a single settings page under Settings > Post Lockdown. Start typing to search every post, page, attachment
and custom post type on your site, click an item to add it to the Locked or Protected box, then hit Save Changes. That’s it.

Built to stay out of the way

  • Locked and protected items are clearly flagged in a status column on your post and page lists, so nobody wonders why an action is missing.
  • Works with both the block editor and the classic editor. If someone tries to unpublish a protected post, the change is reverted and a notice explains why.
  • Optional bulk actions let you lock or protect items straight from the post list.
  • Manage everything from the command line with WP-CLI – run wp postlockdown to see the available commands.
  • A full set of filters lets developers change which capability counts as “admin”, set locked and protected posts programmatically, and customise the status column. See the FAQ for the complete list.

See the screenshots for exactly what an Editor sees when they open a list of locked and protected posts.

Screenshots

Installation

  1. In your WordPress admin, go to Plugins > Add New Plugin and search for “Post Lockdown”
  2. Click Install Now, then Activate
  3. Go to Settings > Post Lockdown and add the posts and pages you want to lock or protect
  4. Click Save Changes

Prefer to install manually? Download the plugin, then either upload the zip file via Plugins > Add New Plugin > Upload Plugin, or extract it and upload the post-lockdown folder to /wp-content/plugins/. Activate it from the Plugins menu and continue from step 3 above.

FAQ

What is a “non-admin user”?

By default, the plugin classes a non-admin as a user who does not have the manage_options capability e.g an Editor.
The capability can be filtered using the postlockdown_admin_capability filter.

Are there any other filters I can use?

The following filters are used throughout the plugin:

  • postlockdown_admin_capability – The capability a user must have to bypass locked/protected posts restrictions. Default is manage_options.
  • postlockdown_capabilities – Array of capabilities to restrict.
  • postlockdown_excluded_post_types – Array of post types to exclude from search.
  • postlockdown_get_posts – Array of args to pass to get_posts().
  • postlockdown_locked_posts – Array of locked post IDs. Allows you to programmatically add or remove post IDs. Both the key AND value must be set to the post ID.
  • postlockdown_protected_posts – Array of protected post IDs. Allows you to programmatically add or remove post IDs. Both the key AND value must be set to the post ID.
  • postlockdown_column_hidden_default – Boolean which dictates whether the status column should appear by default on post lists. Defaults to false.
  • postlockdown_column_html – String of HTML showing the locked or protected status of a post in the status column on post lists.
  • postlockdown_column_label – String containing the heading/label for the status column on post lists.

Reviews

جون 14, 2024 1 reply
Plugin doesn’t work for patterns. Post type “WP-block” the posts (patterns) are visible and selectable but does not remove the “trash” buttons
اپریل 25, 2024
Post Lockdown is an excellent plugin for admins that want to restrict lower user roles from editing or deleting specific posts.
فبروري 22, 2022 2 replies
I edit my review (original one below) as the “problem” doesn’t exist anymore with the new version. This plugin deserves a 5 stars now that a bulk option is available. The smartest and easiest lock post plugin! ———–ORIGINAL REVIEW BELOW———– Having a website with multiple authors, it’s good to finally have a simple plugin to lock a post once it’s published to be sure nothing is modified. BUT, the current system is not the easiest. Having to go to the options, look for the post, add it to the list, save… it takes a lot of time when you have 300+ posts to lock and there is no batch method. Something that would make this plugin so much easier is having it integrated directly on the posts list, under each post title for example, and just having to click on it there to lock/unlock the post.
اگست 14, 2019 3 replies
Works very well, my only criticism is that private posts/pages should be lockable, ie private posts should appear in the search form. In order to lock them currently you need to publish them, then lock/portect, and then make it private again Update!! the developer added the minor feuature request/bug. This plugin is now perfect!
جولای 20, 2017 1 reply
it works but only as stated. Users with custom role that is not admin will be disregarded by the plugin and get normal admin role: all locks are seen but they can edit the page like a normal admin. In other words: you can’t differentiate between different admin roles unfortunately, it doesn’t recognize it. Would have been great otherwise!
فبروري 23, 2022
I think the plugin is really useful, otherwise I wouldn’t have made it 😉
Read all 8 reviews

Contributors & Developers

“Post Lockdown” is open source software. The following people have contributed to this plugin.

Contributors

“Post Lockdown” has been translated into 2 locales. Thank you to the translators for their contributions.

Translate “Post Lockdown” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

4.1.1

  • Fixed a fatal error on activation caused by the BlockEditorNotice class file being omitted from the 4.1.0 release package

4.1.0

  • New feature: when a non-admin tries to unpublish a protected post in the block editor, the change is reverted and a notice is shown – matching the existing classic editor behaviour

4.0.5

  • Removed a couple of development files erroneously included in previous release

4.0.4

This is a security release. Please update as soon as possible.

  • Added a capability check and nonce to the autocomplete AJAX request to prevent unauthorised access to the post list (Thanks to Krzysztof Zając)
  • Added sanitization to autocomplete search term
  • Added sanitization to the plugin’s settings
  • Added version string to the plugin’s enqueued CSS and JS files to prevent caching issues
  • Added missing text domain to the plugin’s settings page footer text
  • Added wp_kses to the Post Lockdown status column to only allow certain HTML tags

4.0.2

  • Fixed a warning in WordPress 6.7 related to loading translations too early

4.0

This is a major version release. Please read the following notes carefully before updating.

  • Fixed a bug which caused the plugin to not work correctly with the new block editor (Gutenberg). This is fixed by loading the plugin for all requests (including REST requests) rather than just the admin area
  • Fixed a bug which caused the uninstall hook to not be called when the plugin was deleted

3.0.13

  • Updated minimum required WordPress version to 4.6 so translations are loaded from translate.wordpress.org (Thanks to @huubl)

3.0.8

  • Updated text domain to match plugin slug for localization (Thanks to @huubl)

3.0.7

  • Added internationalization support to post list status column (Thanks to @huubl)

3.0.6

  • Fixed a bug which allowed non-admins access to Post Lockdown’s bulk actions

3.0.5

  • New feature: Added bulk actions to post list screens. This is an opt-in feature which must be enabled on the Post Lockdown settings page. (h/t @khaliel for the idea)

3.0.4

  • Fixed a bug that caused authors to be able to edit and delete other’s posts (Thanks @kumar314)
  • Fixed a PHP warning that appeared when creating a new post

3.0.3

  • Improved performance whilst fetching posts (Thanks to joshuadavidnelson)

3.0

This is a major version release. Please read the following notes carefully before updating.

  • Added WP-CLI integration. You can now edit locked and protected posts via the WordPress CLI! Run wp postlockdown to see the list of available commands
  • Bumped PHP version requirement to 5.6 and refactored codebase to use namespaces and PSR-2 coding standards
  • Moved get_posts wrapper method from OptionsPage to PostLockdown so it can be used by the CLI
  • Added add_locked_post, add_protected_post, remove_locked_post and remove_protected_post methods to main class

2.1

  • Added the ability to lock and protect attachments.

2.0.3

  • Added private posts to the list of available posts to protect or lock.

2.0.2

  • Fixed missing call to get_post_types() when retrieving posts.
  • Removed unnecessary files

2.0.1

  • Added private posts to the list of available posts to protect or lock.

2.0

This is a major version release. Please read the following notes carefully before updating.

  • Major refactor of code base for performance and future scalability. If you are a developer using any of the plugin class static methods read the FAQ before updating.
  • Added a column to post lists to show the locked or protected status of each post.
  • Added new filters: postlockdown_column_hidden_default, postlockdown_column_html and postlockdown_column_label.
  • Lots of optimisations and general improvements.

1.1.1

  • Fixed PHP warning about missing admin notices file.

1.1

  • Added functionality to prevent non-admins changing the post status of a protected published post to something which could remove it from the front end e.g Draft, Private or Scheduled.
  • Fixed an issue which caused a PHP warning when a non-admin used the Quick Edit box for a protected post.
  • Added new version of multi select plugin.
  • Lots of optimisations and general improvements.

1.0.1

  • Fixed an issue where post IDs could not be filtered if none were set on the options page.
  • Added revisions and the WooCommerce product_variation post type to the excluded post types list.
  • Added escaping to placeholder attributes for search fields.
  • Added a new filter: postlockdown_excluded_post_types.

1.0.0

  • Initial release