Opens in a new tab
  1. Home
  2. Guides
  3. Backend
Backend guide

WordPress admin notices, explained

Learn how WordPress admin notices work, how plugins create error, warning, success and info messages, why dismissible notices are not automatically persistent, and how to keep administration messaging useful.

  • Updated September 11, 2026
  • 22 min read
  • WordPress guide

WordPress admin notices are messages displayed inside the WordPress administration interface to communicate information, warnings, errors, successful actions and other events that may require a user’s attention.

You have almost certainly seen them.

They can look like:

Plugin activated successfully.

A database update is required.

Your configuration is incomplete.

Backup failed.

Settings saved.

A new version is available.

WordPress Core uses admin notices, but plugins and themes can add them too.

That flexibility is useful, but it also explains why mature WordPress installations can eventually develop administration screens containing more banners than actual controls.

Understanding admin notices therefore means understanding several different things:

how notices are rendered
+
where they appear
+
which notice types exist
+
how dismissible notices behave
+
how plugins create them
+
how notices differ from persistent notifications
+
which users should see them

This guide explains how the WordPress admin notice system works, how developers should create notices, why dismissing a notice does not automatically make that dismissal persistent, how Block Editor notices differ from traditional wp-admin notices, and how to manage notice overload without hiding information users genuinely need.

What is a WordPress admin notice?

An admin notice is a message displayed inside the authenticated WordPress administration interface.

WordPress commonly uses notices to communicate:

  • successful actions;
  • errors;
  • warnings;
  • informational messages;
  • configuration requirements;
  • update information;
  • plugin or theme status;
  • maintenance conditions.

The official WordPress admin_notices hook documentation describes the hook used to print notices on normal administration screens.

Admin notices are part of wp-admin

Traditional WordPress notices normally appear near the top of an administration screen, below the main navigation area and around the page heading.

They are not normally intended as frontend visitor notifications.

This distinction matters:

Admin notice
→ authenticated WordPress administration UI

Frontend message
→ public-facing website UI

Email
→ external communication channel

Persistent in-app notification
→ stored application message

Admin notices are not one universal notification system

WordPress contains several different systems that can display information to users.

For example:

  • traditional wp-admin notices;
  • Block Editor notices;
  • settings errors;
  • update messages;
  • plugin-specific banners;
  • persistent application notifications implemented by plugins;
  • frontend alerts.

They may look similar, but they are not necessarily generated or stored in the same way.

The admin_notices hook

The traditional mechanism for displaying administration notices is:

admin_notices

A plugin can attach a callback to this action:

add_action(
    'admin_notices',
    'myplugin_show_notice'
);

When WordPress reaches the appropriate point in the administration screen, that callback can output the notice.

A basic traditional admin notice

function myplugin_show_notice() {
    ?>
    <div class="notice notice-success">
        <p>Configuration saved successfully.</p>
    </div>
    <?php
}

add_action(
    'admin_notices',
    'myplugin_show_notice'
);

WordPress provides standard notice classes

The official admin_notices documentation identifies four primary notice types:

notice-error
notice-warning
notice-success
notice-info

Error notices

Use:

notice notice-error

for conditions where something failed or requires significant corrective attention.

Warning notices

Use:

notice notice-warning

when something deserves attention but is not necessarily a complete failure.

Success notices

Use:

notice notice-success

to confirm that an operation completed successfully.

Info notices

Use:

notice notice-info

for neutral information that does not represent success, failure or an urgent warning.

WordPress 6.4 introduced wp_admin_notice()

Modern WordPress also provides:

wp_admin_notice()

The official wp_admin_notice() documentation explains the standardized function WordPress provides for generating administration notices.

Basic wp_admin_notice() example

add_action(
    'admin_notices',
    function () {
        wp_admin_notice(
            'Configuration saved successfully.',
            array(
                'type' => 'success',
            )
        );
    }
);

Dismissible notices

WordPress supports notices with a close button.

With wp_admin_notice(), a notice can be made dismissible through:

'dismissible' => true

For example:

add_action(
    'admin_notices',
    function () {
        wp_admin_notice(
            'Review the plugin configuration.',
            array(
                'type'        => 'warning',
                'dismissible' => true,
            )
        );
    }
);

Dismissible does not automatically mean permanently dismissed

This is one of the most important details in the system.

Making a traditional WordPress notice dismissible provides an interface for hiding the current notice, but it does not by itself create a complete persistent preference system for your plugin.

If your PHP logic continues to generate the same notice on subsequent requests, you need additional state management if the user’s dismissal should be remembered.

Persistent dismissal requires persistent state

If you want:

dismiss once
→ do not show again to this user

you need to record that decision.

Possible storage locations include:

  • user meta;
  • site options;
  • network options;
  • plugin-specific storage.

For user-specific preferences, WordPress user metadata is often a natural choice. See WordPress User Meta, Explained.

Separate dismissal from resolution

Suppose a notice says:

Backup system is not configured.

Clicking a dismiss button does not mean:

Backup system is now configured.

These are two different states.

Condition-driven notices are often better

A useful model is:

configuration incomplete
→ show warning

configuration completed
→ warning disappears

instead of permanently hiding a warning while the underlying problem remains unresolved.

Scope notices to relevant screens

One of the most common causes of admin clutter is displaying the same notice everywhere.

A plugin configuration warning probably does not need to appear on:

  • Posts;
  • Pages;
  • Media;
  • Users;
  • Comments;
  • every unrelated plugin screen.

Use get_current_screen()

WordPress provides:

get_current_screen()

to identify the current administration screen.

The official get_current_screen() documentation describes the function and the current screen object it returns.

Example screen-specific notice

add_action(
    'admin_notices',
    function () {

        $screen = get_current_screen();

        if ( ! $screen || 'plugins' !== $screen->id ) {
            return;
        }

        wp_admin_notice(
            'Review your plugin configuration.',
            array(
                'type' => 'info',
            )
        );
    }
);

Context reduces notification fatigue

Compare:

Every wp-admin page:
Configure SEO settings.

with:

SEO settings page:
Configuration is incomplete.

The second message appears where the user can actually act on it.

Check user capabilities too

A notice should normally be shown to users who can understand or act on it.

Suppose a message says:

Install the required plugin.

An Author who cannot install plugins cannot resolve the problem.

Use current_user_can()

WordPress provides:

current_user_can()

for capability checks.

The official current_user_can() documentation explains how WordPress evaluates user capabilities.

Example capability-aware notice

add_action(
    'admin_notices',
    function () {

        if ( ! current_user_can( 'manage_options' ) ) {
            return;
        }

        wp_admin_notice(
            'The site configuration requires attention.',
            array(
                'type' => 'warning',
            )
        );
    }
);

Capabilities and roles are different concepts

For authorization-related decisions, WordPress code should generally ask:

Can the current user perform this action?

rather than relying only on a specific role label.

For the full distinction, see WordPress User Roles and Capabilities, Explained.

Roles can still be useful for communication targeting

Roles can represent useful audiences:

Editors
→ editorial information

Administrators
→ technical maintenance information

Authors
→ publishing information

See How to Target WordPress Users by Role for the broader targeting workflow.

Admin notices exist in different administration contexts

Relevant WordPress hooks include:

admin_notices
network_admin_notices
user_admin_notices
all_admin_notices

admin_notices

This is the normal notice hook for standard WordPress administration screens.

network_admin_notices

WordPress Multisite has a separate Network Admin context.

The official network_admin_notices documentation covers notices displayed there.

Do not display network messages everywhere unnecessarily

A warning such as:

Network plugin configuration incomplete.

may belong in Network Admin rather than every individual site’s administration area.

Update nags are special

WordPress has historically used:

update-nag

for important update-related messages.

The official admin_notices documentation warns against using update-nag as an ordinary plugin notice style.

Use semantic notice types

Choose between:

error
warning
success
info

according to the actual meaning of the message.

Plugin promotion is not an error

A message such as:

Upgrade to Pro today.

should not masquerade as a critical error merely to attract attention.

Severity inflation causes notification fatigue

If every plugin presents its message as urgent, actual urgent messages become harder to recognize.

For the broader interface problem, see Decluttering the WordPress Admin Dashboard.

A useful notice should answer three questions

What happened?

Why does it matter?

What should I do?

Weak notice

Error 381.

Better notice

The backup could not be created
because the destination is unavailable.

Check the backup storage configuration.

Provide actions when appropriate

Useful actions might include:

Review settings
Retry backup
Reconnect account
View documentation

Do not turn one notice into an advertising dashboard

A notice containing:

Configure
Upgrade
Leave a review
Join newsletter
Buy another product
Follow us

is no longer a focused administrative message.

Block Editor notices are a separate interface

The WordPress Block Editor uses its own structured notice system.

The official Block Editor Notices documentation explains how notices are created inside Gutenberg-based applications.

The Block Editor can use core/notices

A JavaScript application can create a notice through the WordPress data store.

wp.data
    .dispatch( 'core/notices' )
    .createNotice(
        'success',
        'Settings saved.',
        {
            isDismissible: true
        }
    );

Choose the notification system that belongs to the interface

Traditional wp-admin screen
→ admin_notices / wp_admin_notice()

Block Editor
→ core/notices

Custom application
→ application's own notification system

Admin notices are not persistent in-app notifications

A traditional notice is normally generated during an administration request:

page loads
↓
condition evaluated
↓
notice rendered

It does not inherently provide:

  • read state;
  • unread counters;
  • message history;
  • delivery timestamps;
  • a notification inbox.

Persistent notifications solve a different problem

A persistent notification system may need to store:

recipient
message
created_at
read_at
dismissed_at
priority
action URL

TheOneWP Notifications Generator

TheOneWP Notifications Generator creates targeted persistent in-app messages for WordPress users and roles.

TheOneWP Notifications Off-Canvas

Notifications Off-Canvas provides an administration interface where those persistent messages can be accessed without occupying the main workspace continuously.

Traditional notice vs. persistent notification

Admin notice
→ page-context message
→ normally generated on request
→ no built-in message history

Persistent notification
→ stored message
→ recipient-aware
→ can retain read state
→ accessible later

Use each system for the right type of message

A traditional notice works well for:

Settings saved.

Current configuration invalid.

This page requires action.

A persistent notification works better for:

Editorial policy changed.

Maintenance is scheduled for Friday.

An administrator assigned you a task.

Admin notices are not email

An admin notice reaches users only when they enter WordPress administration.

Email exists outside the authenticated interface.

For the broader distinction, see In-App Notifications vs. Email for WordPress.

Critical monitoring may need an external channel

If wp-admin itself is unavailable, an administration notice cannot reliably alert administrators that wp-admin is unavailable.

Critical operational monitoring may therefore require:

  • email;
  • external monitoring;
  • SMS;
  • chat alerts;
  • other off-site systems.

Admin notices are not access control

A notice saying:

You are not allowed to access this page.

does not itself enforce anything.

Authorization must rely on WordPress capabilities and appropriate server-side checks.

Notice visibility can still follow capabilities

For example:

manage_options
→ configuration warnings

edit_posts
→ editorial messages

manage_woocommerce
→ store administration messages

Do not show users warnings they cannot resolve

An Author generally cannot act on:

Database upgrade required.

Install PHP extension.

Configure SMTP transport.

Install required plugin.

Displaying these messages may create confusion without improving maintenance.

TheOneWP Disable Admin Notifications by Role

TheOneWP Disable Admin Notifications by Role can suppress standard WordPress administration notices for selected roles.

This can help keep technical maintenance messages away from users who cannot act on them.

Role-based suppression still needs care

An Editor may legitimately need notices related to:

  • publishing workflows;
  • content configuration;
  • media processing;
  • editorial issues.

The objective is not simply:

show fewer notices

but:

right notice
+
right user
+
right screen
+
right time

Do not hide every notice globally

Blanket suppression can hide:

  • security warnings;
  • failed updates;
  • database migration problems;
  • backup failures;
  • compatibility warnings;
  • configuration errors.

Audit notices before suppressing them

For each recurring notice, determine:

  1. which component creates it;
  2. which condition triggers it;
  3. who can resolve it;
  4. whether it can be dismissed;
  5. whether dismissal persists;
  6. whether it needs to appear on every screen;
  7. whether the underlying problem should simply be fixed.

Fix the underlying problem when possible

If a notice says:

API key missing.

and the integration is required, the best cleanup is usually:

configure the API key

rather than hiding the warning.

CSS is not a robust notice-management system

This:

.notice {
    display: none !important;
}

may make wp-admin look cleaner, but it can also remove important information indiscriminately.

Manage notices at the logic level

Prefer:

  • resolving the triggering condition;
  • limiting the notice to relevant screens;
  • limiting the audience;
  • implementing persistent dismissal;
  • removing a specific unwanted callback;
  • using an appropriate notification-management system.

Security considerations for custom notices

Admin notices can contain dynamic values.

Being inside wp-admin does not make untrusted content safe.

Escape output according to context

Common WordPress functions include:

esc_html()
esc_attr()
esc_url()
wp_kses_post()

depending on what is being rendered.

The official WordPress escaping documentation explains the principle of escaping output as late as possible and according to its destination context.

Do not display secrets in notices

A notice should not expose:

  • passwords;
  • API secrets;
  • authentication tokens;
  • private credentials;
  • unnecessary customer information.

Accessibility matters

A notice should communicate its meaning through text, not only through color.

Users should be able to understand whether something:

  • failed;
  • succeeded;
  • requires attention;
  • is informational.

Write notices for the intended audience

A technical message might say:

The REST endpoint returned HTTP 403.

A client-facing version may be more useful as:

The connection was rejected.

Reconnect the account or contact
your site administrator.

For broader messaging principles, see Writing Effective In-App Notification Copy.

Admin notices and PHP errors are different

A PHP warning such as:

Warning: Undefined variable...

is not a WordPress admin notice.

It is runtime diagnostic output.

Admin notices and Settings API errors are also distinct

WordPress provides functions such as:

add_settings_error()
settings_errors()

for feedback associated with settings workflows.

The official add_settings_error() documentation describes how a settings error or message is registered.

Notice lifecycle should be deliberate

For every notice, ask:

What causes it to appear?

What causes it to disappear?

Can it be dismissed?

Is dismissal temporary?

Is dismissal persistent?

Does dismissal resolve the underlying condition?

Common notice lifecycle models

One-request success message

Action succeeds
↓
show success
↓
user navigates away
↓
notice disappears

Condition-driven warning

Configuration invalid
↓
show warning
↓
configuration fixed
↓
warning disappears

User-dismissible informational message

New information
↓
show notice
↓
user dismisses
↓
store preference
↓
notice remains hidden

Persistent operational notification

Event occurs
↓
store notification
↓
user reads later
↓
read state retained

Admin notices on agency-managed websites

Agency-managed sites often have users with very different responsibilities.

The agency Administrator may need:

  • security warnings;
  • backup status;
  • technical configuration;
  • maintenance notices.

A client Editor may need only:

  • editorial feedback;
  • publishing information;
  • content-related warnings.

Different audiences can justify different visibility

Administrator
→ operational + technical notices

Editor
→ editorial notices

Author
→ publishing notices

Subscriber
→ minimal administration messaging

How to audit WordPress admin notices

1. Record recurring notices

For each notice, record:

  • its message;
  • its visual type;
  • its source;
  • where it appears;
  • who sees it.

2. Identify the trigger

Determine whether it comes from:

  • missing configuration;
  • an update;
  • a failed task;
  • a license state;
  • a marketing campaign;
  • a security condition;
  • normal action feedback.

3. Determine whether it is actionable

Ask:

Can this user actually
do anything about it?

4. Review its scope

Determine whether the notice really needs to appear across all wp-admin screens.

5. Test dismissal

Dismiss the notice and reload the page.

Determine whether dismissal is:

temporary
or
persistent

6. Test other accounts

Determine whether dismissal or visibility is:

  • per-user;
  • site-wide;
  • role-specific;
  • not persisted at all.

7. Review severity

Check whether:

error
warning
success
info

matches the real meaning of the message.

8. Review promotional messages separately

Promotional information should not masquerade as operational failure.

9. Test smaller administration layouts

Large notices can consume a substantial portion of the screen on narrow devices.

10. Review accessibility

Ensure the notice can be understood without relying solely on visual color cues.

WordPress admin notice checklist

  • Use notices for relevant administration communication.
  • Choose the correct notice type.
  • Use errors only for genuine errors.
  • Use warnings for meaningful warnings.
  • Use success messages for completed actions.
  • Use info notices for neutral information.
  • Do not misuse update-nag.
  • Use wp_admin_notice() where appropriate.
  • Use the appropriate administration notice hook.
  • Limit notices to relevant screens.
  • Use get_current_screen() where appropriate.
  • Limit technical notices to users who can act on them.
  • Use capabilities for authorization decisions.
  • Use roles when they represent a meaningful communication audience.
  • Explain what happened.
  • Explain why it matters.
  • Provide a useful action when appropriate.
  • Avoid unnecessary promotional notices.
  • Do not display everything everywhere.
  • Implement persistent dismissal deliberately.
  • Choose whether dismissal is per-user or global.
  • Separate dismissal from problem resolution.
  • Escape dynamic content correctly.
  • Do not expose credentials or secrets.
  • Use the Block Editor notice system inside Gutenberg interfaces.
  • Use Settings API messages for settings validation where appropriate.
  • Test Network Admin separately on Multisite.
  • Test several user roles.
  • Test dismissal behavior.
  • Test repeated page loads.
  • Review notice accessibility.

TheOneWP tools for admin notifications

Disable Admin Notifications by Role

Disable Admin Notifications by Role can suppress normal WordPress administration notices for selected roles.

Notifications Generator

Notifications Generator creates persistent targeted in-app messages for WordPress users and roles.

Notifications Off-Canvas

Notifications Off-Canvas provides the administration interface where persistent notifications can remain accessible outside the main workspace.

Use each system for the appropriate purpose

Normal admin notice
→ immediate contextual feedback

Disable Admin Notifications by Role
→ reduce irrelevant notices

Notifications Generator
→ create persistent messages

Notifications Off-Canvas
→ provide persistent notification access

Related guides

Final recommendation

WordPress admin notices work best when they are treated as contextual interface messages rather than as a universal broadcasting system.

The basic model is:

condition occurs
↓
notice system evaluates it
↓
relevant user sees message
↓
user understands or resolves it

The important questions are:

Who needs this message?

Where is it relevant?

How serious is it?

Can the user act on it?

How long should it remain?

What makes it disappear?

Use traditional admin notices for immediate contextual feedback.

Use capability-aware and role-aware visibility to keep messages relevant.

Implement persistent dismissal deliberately when a notice should stay dismissed.

Use the Block Editor notice system inside Gutenberg-based interfaces.

Use persistent in-app notifications when messages require history, read state or later retrieval.

Most importantly, reducing admin-notice clutter should not mean hiding useful information. The objective is to make genuinely important messages easier to notice by removing the noise competing with them.

Simplify your WordPress stack

A modular WordPress toolkit. 104 focused tools.

Ultimately, you can build cleaner workflows, maintain fewer plugins and enable only the features each website actually needs.