{"id":370020,"date":"2026-09-19T15:19:49","date_gmt":"2026-09-19T15:19:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pro-admin\/"},"modified":"2026-09-19T15:19:14","modified_gmt":"2026-09-19T15:19:14","slug":"adminkeep","status":"publish","type":"plugin","link":"https:\/\/os.wordpress.org\/plugins\/adminkeep\/","author":4091607,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.1","requires":"6.9","requires_php":"7.4","requires_plugins":null,"header_name":"Adminkeep","header_author":"Shazzad Hossain Khan","header_description":"Turn off comments, block new plugin installs, and duplicate posts safely. Every lock is instantly reversible. No ads, no nags, no notices.","assets_banners_color":"1a1a2e","last_updated":"2026-09-19 15:19:14","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wpproadmin.com","header_author_uri":"https:\/\/w4dev.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":33,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"sajib1223","date":"2026-09-19 15:19:14","revision":3703401}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3703401,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3703401,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3703401,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3703401,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3703401,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3703401,"resolution":"1","location":"assets","locale":"","width":1544,"height":1029},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3703401,"resolution":"2","location":"assets","locale":"","width":1544,"height":1167},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3703401,"resolution":"3","location":"assets","locale":"","width":1544,"height":754},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3703401,"resolution":"4","location":"assets","locale":"","width":1544,"height":629},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3703401,"resolution":"5","location":"assets","locale":"","width":1544,"height":754},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3703401,"resolution":"6","location":"assets","locale":"","width":1544,"height":778},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3703401,"resolution":"7","location":"assets","locale":"","width":1544,"height":1421},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3703401,"resolution":"8","location":"assets","locale":"","width":1544,"height":1045},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3703401,"resolution":"9","location":"assets","locale":"","width":1544,"height":1457}},"screenshots":{"1":"Two groups, ten features, one switch each. Everything starts off.","2":"Nothing is deleted until you have seen the exact count. Order notes and reviews are excluded unless you say otherwise.","3":"Duplicate and Live Draft where you already work \u2014 the row actions, not a new menu.","4":"Swapping a file for a different format tells you what references it first, then keeps the old URL redirecting.","5":"Sorting gets a screen of its own: drag a row where you want it \u2014 and the order applies to your front-end queries too.","6":"Rewrite a published page while it stays published. Merge back into the same post, same URL.","7":"The administrator guard is on by default. Blocking plugin-created accounts is opt-in, because it breaks WooCommerce checkout.","8":"Stop plugin and theme installs and uploads, while updates keep working \u2014 and switch it back off from this same screen.","9":"The redirects WordPress core skips: hierarchical pages, and posts moved to a new parent."}},"plugin_section":[],"plugin_tags":[14833,23177,6459,166592],"plugin_category":[],"plugin_contributors":[80023],"plugin_business_model":[],"class_list":["post-370020","plugin","type-plugin","status-publish","hentry","plugin_tags-disable-comments","plugin_tags-duplicate-post","plugin_tags-lockdown","plugin_tags-replace-media","plugin_contributors-sajib1223","plugin_committers-sajib1223"],"banners":{"banner":"https:\/\/ps.w.org\/adminkeep\/assets\/banner-772x250.png?rev=3703401","banner_2x":"https:\/\/ps.w.org\/adminkeep\/assets\/banner-1544x500.png?rev=3703401","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/adminkeep\/assets\/icon.svg?rev=3703401","icon":"https:\/\/ps.w.org\/adminkeep\/assets\/icon.svg?rev=3703401","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/adminkeep\/assets\/screenshot-1.png?rev=3703401","caption":"Two groups, ten features, one switch each. Everything starts off."},{"src":"https:\/\/ps.w.org\/adminkeep\/assets\/screenshot-2.png?rev=3703401","caption":"Nothing is deleted until you have seen the exact count. Order notes and reviews are excluded unless you say otherwise."},{"src":"https:\/\/ps.w.org\/adminkeep\/assets\/screenshot-3.png?rev=3703401","caption":"Duplicate and Live Draft where you already work \u2014 the row actions, not a new menu."},{"src":"https:\/\/ps.w.org\/adminkeep\/assets\/screenshot-4.png?rev=3703401","caption":"Swapping a file for a different format tells you what references it first, then keeps the old URL redirecting."},{"src":"https:\/\/ps.w.org\/adminkeep\/assets\/screenshot-5.png?rev=3703401","caption":"Sorting gets a screen of its own: drag a row where you want it \u2014 and the order applies to your front-end queries too."},{"src":"https:\/\/ps.w.org\/adminkeep\/assets\/screenshot-6.png?rev=3703401","caption":"Rewrite a published page while it stays published. Merge back into the same post, same URL."},{"src":"https:\/\/ps.w.org\/adminkeep\/assets\/screenshot-7.png?rev=3703401","caption":"The administrator guard is on by default. Blocking plugin-created accounts is opt-in, because it breaks WooCommerce checkout."},{"src":"https:\/\/ps.w.org\/adminkeep\/assets\/screenshot-8.png?rev=3703401","caption":"Stop plugin and theme installs and uploads, while updates keep working \u2014 and switch it back off from this same screen."},{"src":"https:\/\/ps.w.org\/adminkeep\/assets\/screenshot-9.png?rev=3703401","caption":"The redirects WordPress core skips: hierarchical pages, and posts moved to a new parent."}],"raw_content":"<!--section=description-->\n<p>You decide what changes on this site.<\/p>\n\n<p>Adminkeep is two sets of tools under that one idea. <strong>Site Lock<\/strong> stops things changing behind\nyour back \u2014 no new comment, no new plugin, no new user. <strong>Content<\/strong> makes the changes you do want\nsafe to make.<\/p>\n\n<p>Every feature is a single switch, off until you turn it on. <strong>Switching one off never leaves you\nrepair work<\/strong>: the locks work purely through WordPress filters, so your site is exactly as it was,\nand what you made with the Content features stays where you put it.<\/p>\n\n<h4>Site Lock<\/h4>\n\n<ul>\n<li><strong>Disable Comments<\/strong> \u2014 comments off everywhere, including direct POSTs from spam bots and the REST API. Nothing is written to your database, so switching it off brings every comment back. An optional cleanup button deletes spam and trashed comments, after showing you the exact count. <a href=\"https:\/\/wpproadmin.com\/guides\/disable-comments-wordpress\/\">Guide<\/a><\/li>\n<li><strong>Registration Lockdown<\/strong> \u2014 stops new accounts being created, and refuses creation of or promotion to administrator. Blocked attempts are logged. <a href=\"https:\/\/wpproadmin.com\/guides\/stop-spam-user-registration-wordpress\/\">Guide<\/a><\/li>\n<li><strong>Disable XML-RPC<\/strong> \u2014 closes <code>xmlrpc.php<\/code> completely, including pingbacks and <code>system.multicall<\/code>. <a href=\"https:\/\/wpproadmin.com\/guides\/disable-xmlrpc-wordpress\/\">Guide<\/a><\/li>\n<li><strong>Disable File Editing<\/strong> \u2014 removes the built-in plugin and theme file editors, reversibly.<\/li>\n<li><strong>Installation Lockdown<\/strong> \u2014 no new plugins or themes, no uploads, for anyone. Updates keep working, so security releases still reach your site. <a href=\"https:\/\/wpproadmin.com\/guides\/block-plugin-installs-wordpress\/\">Guide<\/a><\/li>\n<\/ul>\n\n<h4>Content<\/h4>\n\n<ul>\n<li><strong>Duplicate<\/strong> \u2014 copy any post or page as a draft. Custom fields, taxonomies, the featured image and page builder layouts (Elementor, ACF) come along intact, and the original is never modified. <a href=\"https:\/\/wpproadmin.com\/guides\/duplicate-page-wordpress\/\">Guide<\/a><\/li>\n<li><strong>Live Draft<\/strong> \u2014 rework a published page in a private working copy, then publish it over the original. Same ID, same URL, and the old version is kept as a revision. <a href=\"https:\/\/wpproadmin.com\/guides\/edit-published-page-without-unpublishing\/\">Guide<\/a><\/li>\n<li><strong>Keep URL<\/strong> \u2014 rename or move a page and its old address keeps working, child pages included. Fills the gaps WordPress leaves for pages and leaves posts to core. <a href=\"https:\/\/wpproadmin.com\/guides\/change-wordpress-slug-redirect\/\">Guide<\/a><\/li>\n<li><strong>Order<\/strong> \u2014 drag posts into the order you want on a dedicated Sort screen, one post type at a time. Lists that already ask for their own order, such as WooCommerce products and search results, are left alone. <a href=\"https:\/\/wpproadmin.com\/guides\/reorder-wordpress-posts\/\">Guide<\/a><\/li>\n<li><strong>Replace Media<\/strong> \u2014 upload a new version of a file over the old one. Same file type keeps the same URL; a different type updates the posts that use it and redirects the old address. <a href=\"https:\/\/wpproadmin.com\/guides\/replace-image-wordpress-same-url\/\">Guide<\/a><\/li>\n<\/ul>\n\n<h4>Performance<\/h4>\n\n<p>A feature you have not enabled registers zero hooks and loads zero assets.<\/p>\n\n<h4>Links<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/wpproadmin.com\/\">Website<\/a><\/li>\n<li><a href=\"https:\/\/wpproadmin.com\/docs\/\">Documentation<\/a><\/li>\n<li><a href=\"https:\/\/wpproadmin.com\/guides\/\">Guides<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>In your WordPress admin, go to <strong>Plugins \u2192 Add New Plugin<\/strong>, search for \"Adminkeep\" and click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<li>Open the new <strong>Adminkeep<\/strong> menu item. Every feature starts <strong>off<\/strong>; switch on only the ones you want.<\/li>\n<li>To remove the plugin, deactivate and delete it as usual. Uninstalling removes its settings and its own redirect table. Nothing it changed while enabled outlives switching the feature off.<\/li>\n<\/ol>\n\n<p>Or with WP-CLI:<\/p>\n\n<pre><code>wp plugin install adminkeep --activate\n<\/code><\/pre>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20this%20delete%20my%20comments%3F\"><h3>Will this delete my comments?<\/h3><\/dt>\n<dd><p>Not unless you ask it to. Turning Disable Comments on only hides them \u2014 a test asserts the comment\nrows are untouched after a full enable-and-disable cycle.<\/p>\n\n<p>There is a separate cleanup button that does delete, and it deletes <strong>spam and trashed comments\nonly<\/strong> unless you tick the box to include approved ones. It shows the exact count, asks you to\nconfirm, and cannot be undone.<\/p><\/dd>\n<dt id=\"can%20i%20turn%20it%20back%20off%3F\"><h3>Can I turn it back off?<\/h3><\/dt>\n<dd><p>Yes, instantly. There is never a migration to run or a repair step to find.<\/p>\n\n<p>The locks work purely through WordPress filters, so nothing was written to your database to undo \u2014\nswitch one off and your site is exactly as it was. The Content features are deliberately different:\nthey write the things you asked them to write. A copy you made, an order you saved, a file you\nreplaced, a redirect recorded when you renamed a page \u2014 switching the feature off stops it doing\nany more, and leaves what it already did alone. Work you did on purpose should not disappear\nbecause you unticked a checkbox.<\/p><\/dd>\n<dt id=\"does%20this%20actually%20stop%20comment%20spam%20bots%3F\"><h3>Does this actually stop comment spam bots?<\/h3><\/dt>\n<dd><p>Yes. Bots usually POST straight to <code>wp-comments-post.php<\/code> without ever loading your page, so\nhiding the comment form does nothing. Adminkeep refuses those requests with a 403 before\nWordPress processes them, and refuses comment creation through the REST API as well.<\/p><\/dd>\n<dt id=\"is%20installation%20lockdown%20a%20security%20feature%3F\"><h3>Is Installation Lockdown a security feature?<\/h3><\/dt>\n<dd><p>Not exactly, and it would be dishonest to say otherwise. It is enforced in PHP, so anyone with\nfilesystem, database or WP-CLI access can bypass it. It reliably stops accidents and casual\nchanges \u2014 a client installing something on a whim, or uploading a plugin zip from who knows where. Treat it\nas a policy guard, not a security boundary.<\/p><\/dd>\n<dt id=\"why%20not%20just%20use%20the%20disallow_file_mods%20constant%3F\"><h3>Why not just use the DISALLOW_FILE_MODS constant?<\/h3><\/dt>\n<dd><p>Because it cannot be switched off from the admin. Once it is in <code>wp-config.php<\/code> you need file\naccess to undo it, which strands people. Installation Lockdown filters capabilities instead, so\nyou can always turn it off from the settings screen. If you want the harder version, the constant\nis still there and this plugin does not interfere with it.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Disable comments, freeze plugin installs, duplicate posts and rewrite published pages safely. Every feature is one switch, off until you turn it on.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/370020","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=370020"}],"author":[{"embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sajib1223"}],"wp:attachment":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=370020"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=370020"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=370020"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=370020"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=370020"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=370020"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}