/WP-Dismissible-Notices-Handler

A simple library to handle dismissible admin notices for WordPress

Primary LanguagePHPGNU General Public License v3.0GPL-3.0

WordPress Dismissible Notices Handler

Scrutinizer Code Quality

Since version 4.2, WordPress has a built-in mechanism for handling dismissible admin notices. While this mechanism handles dismissing notices, the dismissal isn't persistent. This means that a user would see the notice on every page load, even though he or she dismissed the notice already.

What the Dismissible Notices Handler (DNH) library does is handle the persistent part of dismissing admin notices.

How It Works

The DNH library is extremely simple to use and yet has a couple of advanced options.

The basics of it is to register a new admin notice. You really need 3 things for registering a notice:

  • a unique ID that will identify the notice (you will be warned in case of ID conflicts)
  • a notice type
  • a message to display in the notice

There is a handy helper function available for notice registration: dnh_register_notice()

This function takes 3 parameters:

  • $id (string): the unique ID of the notice
  • $type (string): the type of notice you want to display. Currently it can be error for an error notice or updated for a success/update notice
  • $content (string): the content of the admin notice
  • $args (array): additional parameters that can be passed to the notice handler (see below)

Installation

The simpest way to use DNH is to add it as a Composer dependency:

composer require julien731/wp-dismissible-notices-handler

Example

Registering an admin notice would look like that:

dnh_register_notice( 'my_notice', 'updated', __( 'This is my notice' ) );

Advanced Parameters

The function takes an array of optional parameters allowing more control over the notices and how they're dismissed. Only 2 parameters are available so far but hopefully more will be coming soon.

Hereafter is the list of available parameters to be passed in the $args array. Please note that the $args parameter is optional.

Parameter Possible Value(s) Default Description
scope user, global user Whether the notice should be dismissed for the current user only or globally on the site. A notice dismissed for a user will still show up for other users, while a notice dismissed globally will not be displayed anymore after being dismissed once.
cap Any WordPress capability If not empty, the handler will check if the current user has the specified before displaying the notice.
class string Additional class to add to the notice wrapper