Notice Triage

Notice Triage

Details
View on WordPress

Every plugin gets to shout at the top of wp-admin, and they all do: licence reminders, review requests, setup wizards, update nags. The existing answer is to hide them, and that creates a worse problem: a genuinely critical warning disappears along with the sales pitch.

Notice Triage does not hide anything. It ranks. It captures every admin notice, works out which plugin or theme emitted it (by reflecting on the hook callback, not by guessing from the text), sorts it into a severity bucket and shows one summary bar: “6 notices — 2 need action, 3 informational, 1 license”. Critical notices stay inline by default, exactly where they were, unmodified. The log then tells you which plugin has shown you the same nag 400 times. Setup banners and onboarding bars that are not standard notice markup are collapsed as well; scripts and hidden templates pass through untouched. Nothing is deleted, nothing is rewritten; the panel simply moves the noise out of the way and labels each notice with its source.

Buckets

  • Critical — error notices. Shown inline, at the top, by default. You can collapse them too: the panel then opens by itself and turns red whenever a critical notice is present.
  • Needs action — warnings and update nags.
  • Informational — success and info notices.
  • Marketing & license — licence prompts, upgrade pitches, review requests, sales. Collapsed by default whatever colour the plugin painted them. A notice the plugin marked as an error is never put here.

Severity comes from the notice’s declared type, then its CSS classes, then a list of keywords that can only raise a notice (security, failed, database error…). The keyword and marketing lists are visible and editable in Settings and filterable in code.

Notice log

Tools Notice Log lists every distinct notice this admin has seen: the plugin behind it, its bucket, when it first and last appeared and how often it has interrupted you (counted at most once every five minutes per notice, so the log costs nothing on busy sites). The same count shows next to each notice in the panel. From there you can mute a notice for everyone, snooze it for 7 or 30 days, or pin it inline or collapsed regardless of its bucket. Each notice in the panel also has a per-user Snooze link (7 days), and administrators get a Mute link right there. Counters and dates are normalised before logging, so “3 items need attention” and “4 items need attention” are one entry.

Safe by design

This plugin intercepts other plugins’ output, so the recovery paths come first:

  • define( 'NOTICE_TRIAGE_DISABLE', true ); in wp-config.php switches capture off entirely.
  • Append ?notice_triage_off=1 to any admin URL to bypass capture for that one page load — no FTP needed.
  • Capture never runs during AJAX, REST, cron, the Customizer, iframes, or on the update and install screens, and never before the admin screen is known.
  • A per-plugin “always inline” rule and a screen exclusion list exempt anything whose own scripts rely on inline notices.
  • A notice callback that throws is caught and logged instead of taking down wp-admin.

Captured markup is re-emitted byte-for-byte, including ids, classes, data attributes and inline scripts, so each plugin’s own dismiss buttons and AJAX handlers keep working.

Compatibility

Checked on WordPress 7.1 with each plugin’s current release, on a clean site. “Dismiss” means the plugin’s own dismiss control was clicked inside the collapsed panel and the notice stayed dismissed after a reload.

  • Yoast SEO — captured, attributed, “blocking robots” is Critical (inline), first-run configuration notice is Informational. No dismiss control on its notices.
  • Rank Math SEO — captured and attributed; “only one SEO plugin” is Critical and stays inline, its own dismiss works.
  • Elementor — captured and attributed; promotional notices land in Informational, its own dismiss control (e-notice__dismiss) works inside the panel and persists.
  • WooCommerce — no admin_notices output on a fresh store (its notes live in the WooCommerce Admin app). The panel renders on WooCommerce screens without conflict.
  • Jetpack — its connection banners are injected by JavaScript, not printed as admin notices, so they are neither captured nor affected.
  • Wordfence — captured and attributed (“Needs action”); its dismiss button works inside the panel and persists. Its onboarding banner is not a notice and passes through untouched.
  • WPForms — removes every admin notice on its own screens itself; elsewhere nothing to capture on a fresh install.
  • Contact Form 7 — emits no notices on a fresh install; no conflict.
  • UpdraftPlus — welcome notice captured on its settings screen as Informational.

No plugin needed the shipped “always inline” list, which is therefore empty in this release.

Known limitation

A plugin whose JavaScript binds to a position-dependent selector, or binds before the panel exists in the page, may lose its dismiss button when its notice is collapsed. Set that plugin to “Always inline” in Settings Notice Triage Per-plugin rules.

Privacy

Notice Triage stores the plain-text excerpt, source and counts of each notice in a table on your site. It makes no outbound requests and sends nothing anywhere.

Details

Plugin code:
notice-triage
Plugin version:
0.1.0
Outdated:
No
WP version:
6.4 or higher
PHP version:
8.1 or higher
Test up to WP version:
7.1.4
Total installations:
0
Last updated:
2026-11-07
Rating:
Times rated:
0
admin
admin-notices
cleanup
dashboard
notifications