szepeviktor/persistent-admin-notices

Persistent admin notices for WordPress.

v0.2.0 2019-11-03 18:26 UTC

This package is auto-updated.

Last update: 2024-10-14 06:39:24 UTC


README

This package is for displaying admin notices for site-wide events not for individual user transactions. Here are some examples.

  • [WP-Cron] Authentication token for XYZ API has expired.
  • All Editors! Please finish your articles by 8pm.
  • We have a new release v3.2.1. See new features at http://example.com/
  • CSV import failed. We are out of sync!
  • Incomplete ACF options: x, y, z
  • All products are out of stock!
  • Maximum X limit is reached. Please reduce X!
  • John Doe is fired! Please do not contact him anymore.
// Use Composer instead:  composer require szepeviktor/persistent-admin-notices
// require __DIR__ . '/vendor/szepeviktor/persistent-admin-notices/src/PersistentNotices.php';

use WordPress\Admin\PersistentNotices;

// Fire it up!
\add_action('init', function () {
    new PersistentNotices();
});
// Or HookConstructorTo::init(PersistentNotices::class, 0);

// New notice.
PersistentNotices::add('slug', 'Something needs your attention!');

// New error notice.
PersistentNotices::error('slug', 'An error needs to be resolved!');

// Check whether a notice is showing.
if (PersistentNotices::isActive('slug')) {}

// Delete notice.
PersistentNotices::remove('slug');

// Customize notice.
PersistentNotices::add(
    'slug',
    'Something very special needs your attention!',
    [
        'expiration' => PersistentNotices::PERSISTENT, // Expiration in seconds or PersistentNotices::ONCE
        'type'       => 'info',           // Notice type: info, succes, warning, error.
        'capability' => 'manage_options', // WordPress capability to receive notifications.
        'priority'   => 10,               // Used to order notices.
        'classes'    => '',               // Override CSS classes.
        'noticeHtml' => '',               // Override full notice HTML.
    ]
);

What is the goal here??

When your plugin or theme handles admin notices you have to make a calculation or decision and display the notice every time.

If you use this package you have to make your calculation only once and

  1. Leave the notice there
  2. Or let the notice expire
  3. Or remove it at a later event

Additional benefit is to display notices in WordPress cron jobs and AJAX actions or REST calls.

Why not ... ?

  • Dismissable notices cloud be very easily... dismissed.
  • Notices on specific Admin Pages may be overlooked.
  • Showing notices to a Specific User would make this package a messaging system.

Similar projects