{"id":287836,"date":"2026-03-12T07:04:18","date_gmt":"2026-03-12T07:04:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/dashclean\/"},"modified":"2026-06-12T08:36:48","modified_gmt":"2026-06-12T08:36:48","slug":"dashclean","status":"publish","type":"plugin","link":"https:\/\/bal.wordpress.org\/plugins\/dashclean\/","author":23462491,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.0","stable_tag":"2.0.0","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"DashClean","header_author":"Sandipsinh Chauhan","header_description":"A professional WordPress Admin Optimization Plugin to clean up the dashboard and improve performance.","assets_banners_color":"e6e8e9","last_updated":"2026-06-12 08:36:48","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/dashclean","header_author_uri":"https:\/\/profiles.wordpress.org\/sandipdeveloper\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":519,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"sandipdeveloper","date":"2026-03-12 07:49:35"},"2.0.0":{"tag":"2.0.0","author":"sandipdeveloper","date":"2026-06-12 08:36:48"}},"upgrade_notice":{"2.0.0":"<p>Major production-hardening release. Introduces administrator protection safeguards, preset preservation improvements, schema-aware imports, discovery cache architecture, performance optimizations, and better scalability for large WordPress installations. Existing settings remain compatible and migrate automatically. No manual database steps required.<\/p>","1.0.2":"<p>Production hardening update with administrator safety, preset fixes, and scalability improvements. Recommended for all users on 1.0.1 or earlier.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3481022,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3481022,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3480895,"resolution":"772x250","location":"assets","locale":"","width":3648,"height":1152}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1","2.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3480895,"resolution":"1","location":"assets","locale":"","width":1355,"height":552},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3480895,"resolution":"2","location":"assets","locale":"","width":1354,"height":558},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3480895,"resolution":"3","location":"assets","locale":"","width":1351,"height":576}},"screenshots":{"1":"The Dashboard Widgets cleaner.","2":"Performance optimization settings.","3":"Role-based visibility controls."}},"plugin_section":[],"plugin_tags":[83,3786,434,187,247],"plugin_category":[52],"plugin_contributors":[257577],"plugin_business_model":[],"class_list":["post-287836","plugin","type-plugin","status-publish","hentry","plugin_tags-admin","plugin_tags-cleanup","plugin_tags-dashboard","plugin_tags-optimization","plugin_tags-performance","plugin_category-performance","plugin_contributors-sandipdeveloper","plugin_committers-sandipdeveloper"],"banners":{"banner":"https:\/\/ps.w.org\/dashclean\/assets\/banner-772x250.png?rev=3480895","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/dashclean\/assets\/icon-128x128.png?rev=3481022","icon_2x":"https:\/\/ps.w.org\/dashclean\/assets\/icon-256x256.png?rev=3481022","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/dashclean\/assets\/screenshot-1.png?rev=3480895","caption":"The Dashboard Widgets cleaner."},{"src":"https:\/\/ps.w.org\/dashclean\/assets\/screenshot-2.png?rev=3480895","caption":"Performance optimization settings."},{"src":"https:\/\/ps.w.org\/dashclean\/assets\/screenshot-3.png?rev=3480895","caption":"Role-based visibility controls."}],"raw_content":"<!--section=description-->\n<p>DashClean is a modular WordPress admin optimization plugin built for developers, agencies, and site owners who need a cleaner, faster, and more professional wp-admin experience.<\/p>\n\n<p>Version 2.0.0 introduces a service-layer architecture with administrator protection, schema-aware settings migration, runtime discovery caching, and scalable user targeting \u2014 designed for client deployments and large WordPress installations.<\/p>\n\n<h4>Core Capabilities<\/h4>\n\n<ul>\n<li><strong>Menu Cleaner<\/strong> \u2014 Hide admin menu and submenu items by role or user.<\/li>\n<li><strong>Dashboard Widget Manager<\/strong> \u2014 Remove all or specific dashboard widgets.<\/li>\n<li><strong>Admin Bar Cleaner<\/strong> \u2014 Hide toolbar nodes for targeted users.<\/li>\n<li><strong>Notice Cleaner<\/strong> \u2014 Suppress admin notices while optionally keeping critical errors.<\/li>\n<li><strong>Performance Optimization Tools<\/strong> \u2014 Disable emojis, jQuery Migrate, header junk, and selectively dequeue frontend assets.<\/li>\n<li><strong>Role-Based Visibility Controls<\/strong> \u2014 Apply cleaning rules to selected roles.<\/li>\n<li><strong>User-Specific Targeting<\/strong> \u2014 Fine-tune restrictions to individual user accounts.<\/li>\n<li><strong>Preset Management System<\/strong> \u2014 Apply Client or Developer templates; save custom snapshots.<\/li>\n<li><strong>Import \/ Export Settings<\/strong> \u2014 Move configurations between sites with JSON backups.<\/li>\n<li><strong>Schema-Aware Settings Migration<\/strong> \u2014 Automatic compatibility for legacy export files.<\/li>\n<li><strong>Runtime Discovery Cache System<\/strong> \u2014 Reliable widget, admin bar, and asset inventories.<\/li>\n<li><strong>Safe Administrator Protection Layer<\/strong> \u2014 Users with <code>manage_options<\/code> are never restricted.<\/li>\n<li><strong>AJAX User Search &amp; Scalability<\/strong> \u2014 Paginated user search for large sites (no bulk loading).<\/li>\n<li><strong>Multisite-Aware Cleanup Support<\/strong> \u2014 Uninstall removes data across network sites.<\/li>\n<li><strong>Translation Ready<\/strong> \u2014 Full text domain support with POT catalog included.<\/li>\n<\/ul>\n\n<h4>Why DashClean<\/h4>\n\n<p>Unlike heavy white-label plugins, DashClean uses a performance-first modular design. Optional modules load only when enabled. Settings are stored in a single option with schema versioning for safe upgrades.<\/p>\n\n<p>Administrators always retain full access. Presets merge into existing configuration rather than wiping unrelated module settings.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>dashclean<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Open <strong>DashClean<\/strong> in the admin sidebar to configure modules.<\/li>\n<li>Visit the WordPress Dashboard once to populate the widget discovery cache.<\/li>\n<li>Visit the site frontend once (with Performance enabled) to seed asset discovery.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20dashclean%20free%3F\"><h3>Is DashClean free?<\/h3><\/dt>\n<dd><p>Yes. DashClean is open-source software released under the GPL v2 or later.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20my%20site%3F\"><h3>Will this slow down my site?<\/h3><\/dt>\n<dd><p>No. Disabled modules do not register hooks. Asset discovery uses hash-based transient writes to avoid per-request database churn. The Access tab uses AJAX search instead of loading full user lists.<\/p><\/dd>\n<dt id=\"can%20administrators%20be%20locked%20out%3F\"><h3>Can administrators be locked out?<\/h3><\/dt>\n<dd><p>No. Version 2.0.0 includes an administrator protection layer. Users with the <code>manage_options<\/code> capability bypass all cleaner restrictions. The DashClean settings page remains accessible for recovery.<\/p><\/dd>\n<dt id=\"can%20i%20hide%20dashclean%20from%20clients%3F\"><h3>Can I hide DashClean from clients?<\/h3><\/dt>\n<dd><p>The DashClean settings menu requires <code>manage_options<\/code>. Non-administrator roles cannot access plugin settings by default. Use the Access module to apply cleaning rules to specific roles and users.<\/p><\/dd>\n<dt id=\"do%20presets%20overwrite%20my%20entire%20configuration%3F\"><h3>Do presets overwrite my entire configuration?<\/h3><\/dt>\n<dd><p>No. Starting in 2.0.0, applying a preset merges only the keys defined in that preset. Your existing Menu Cleaner, Dashboard, and other module settings outside the preset remain intact.<\/p><\/dd>\n<dt id=\"does%20dashclean%20work%20on%20multisite%3F\"><h3>Does DashClean work on multisite?<\/h3><\/dt>\n<dd><p>Yes. Uninstall cleanup runs on all network sites. Configure each site independently through its own DashClean settings.<\/p><\/dd>\n<dt id=\"is%20dashclean%20translation%20ready%3F\"><h3>Is DashClean translation ready?<\/h3><\/dt>\n<dd><p>Yes. The plugin loads the <code>dashclean<\/code> text domain and includes a POT file in <code>\/languages\/<\/code>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.0<\/h4>\n\n<p>Major architecture and production hardening release.<\/p>\n\n<p><strong>Added:<\/strong>\n* Administrator protection layer (<code>User_Access<\/code> service)\n* Centralized User Targeting system (<code>User_Targeting<\/code> service)\n* Schema migration framework with <code>schema_version<\/code> support\n* Runtime discovery caching for dashboard widgets and admin bar nodes\n* AJAX paginated user search for Access tab (20 results per request)\n* Multisite uninstall cleanup across all network sites\n* Translation loading via <code>load_plugin_textdomain()<\/code>\n* Silence <code>index.php<\/code> files throughout plugin directories\n* <code>dashclean_bypass_admin_protection<\/code> filter for extensibility<\/p>\n\n<p><strong>Changed:<\/strong>\n* Preset application now merges preset keys into existing settings (preserves unrelated modules)\n* Settings class refactored to pure data layer (controllers own nonce\/lifecycle)\n* Discovery system redesigned with hook-time collection and cached inventories\n* Asset discovery optimized with hash-based transient write skipping\n* User targeting centralized in single service (removed duplicated logic)\n* Import\/export upgraded with schema validation and migration path\n* Custom preset snapshots saved from server-side persisted settings\n* Discovery cache diff checks to prevent redundant option writes\n* Improved selected-user display limits (up to 1,000 users)\n* Strict admin tab whitelist validation<\/p>\n\n<p><strong>Fixed:<\/strong>\n* Administrator lockout scenarios via menu hiding and direct URL blocking\n* Preset configuration overwrite wiping unrelated module settings\n* Nonce lifecycle inconsistencies for <code>active_preset<\/code> clearing\n* Dashboard widget and admin bar discovery reliability on settings page\n* Asset transient write inefficiency on every frontend page load\n* Unlimited <code>get_users()<\/code> loading on Access tab\n* Hardcoded JavaScript strings not passed through localization\n* Presets master toggle outside form submission path\n* Documentation inaccuracies (removed nonexistent \"Blogger Mode\" preset reference)\n* Removed deprecated Role_Manager targeting method<\/p>\n\n<p><strong>Security:<\/strong>\n* Protected administrators bypass all cleaner restrictions\n* Improved import file path validation (no sanitization of filesystem tmp paths)\n* Removed HTTP\/<code>$_POST<\/code> concerns from Settings data layer<\/p>\n\n<p><strong>Performance:<\/strong>\n* Eliminated unnecessary transient writes when asset inventory unchanged\n* Removed rewrite flush on activation and deactivation\n* Scalable user search replaces bulk role roster loading\n* Reduced admin page load on large-user installations<\/p>\n\n<p><strong>Developer:<\/strong>\n* New service-layer architecture (<code>User_Access<\/code>, <code>User_Targeting<\/code>, <code>Discovery<\/code>, <code>Schema<\/code>)\n* Schema migration support for forward-compatible imports\n* Cleaner module integrations via shared targeting service\n* Improved maintainability and reduced code duplication\n* Internal maintainability and final pre-release cleanup improvements<\/p>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Production hardening: administrator safety layer, preset merge fix, scalable user search<\/li>\n<li>Asset discovery hash-based transient writes<\/li>\n<li>Schema version support for import\/export<\/li>\n<li>Cached dashboard widget and admin bar discovery<\/li>\n<li>Multisite uninstall support<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Corrected invalid Author URI<\/li>\n<li>Improved plugin header metadata<\/li>\n<li>Security and coding standards improvements<\/li>\n<li>Internal refactoring and cleanup<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Modular cleaners for Dashboard, Menu, and Admin Bar<\/li>\n<li>Performance optimizations<\/li>\n<li>Presets and data portability<\/li>\n<\/ul>","raw_excerpt":"A WordPress admin optimization plugin. Clean the dashboard, control menus, optimize performance, and manage client experiences safely.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/287836","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=287836"}],"author":[{"embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sandipdeveloper"}],"wp:attachment":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=287836"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=287836"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=287836"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=287836"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=287836"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=287836"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}