=== Admin Notices Cleaner ===
Contributors: snehalpancholi
Tags: admin notices, clean admin, suppress notices, user roles, admin
Requires at least: 6.0
Tested up to: 6.7
Stable tag: 1.0.0
Requires PHP: 8.1
License: GPL-2.0+
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Suppress WordPress admin notices by user role, by admin screen, or both — keeping the dashboard clean for editors, clients, and non-admin users.

== Description ==

Admin Notices Cleaner removes the flood of notices, warnings, and update nags from the WordPress admin for roles and screens you choose. Administrators can always be excluded so they still see everything. A CSS safety net catches notices injected outside the standard hooks.

Features:
* Suppress by user role (editor, author, subscriber, shop manager, etc.)
* Suppress by screen ID (dashboard, plugins, themes, edit-post, custom plugin pages)
* Three modes: by role only, by screen only, or both (role AND screen must match)
* Administrators always protected by default
* Optional suppression on the plugin's own settings page
* Screen ID helper displayed on settings page
* CSS safety net for notices injected outside admin_notices hook
* Zero JavaScript required

== Installation ==

1. Upload the `admin-notices-cleaner` folder to `/wp-content/plugins/`.
2. Activate through **Plugins → Installed Plugins**.
3. Go to **Settings → Notices Cleaner** and configure.

== Frequently Asked Questions ==

= How do I find a screen ID? =
Navigate to the admin screen, then check the URL. The part after `wp-admin/` or the `page=` parameter value is typically the screen ID. The plugin also displays the current screen ID at the bottom of its settings page.

= Will this remove all notices permanently? =
No — notices are only suppressed for roles and/or screens you configure. Administrators are never affected when the "Protect Administrators" option is checked.

= What if a notice is still showing? =
Some plugins output notices directly with `echo` rather than using the `admin_notices` hook. The CSS safety net option handles these.

== Changelog ==

= 1.0.0 =
* Initial release.
