Desk9 Notice Planner – Announcement Bar & Scheduler

Description

Desk9 Notice Planner is a lightweight plugin for informative site notices: vacation and holiday closures, changed opening hours, maintenance windows, delivery delays and short announcements. Create a notice once, schedule it precisely and let it appear and disappear automatically – evaluated in your site’s timezone on every page view.

It is deliberately not an aggressive marketing popup tool. The focus is on serious, accessible communication with your visitors.

Two display layouts

  • Announcement Bar – a slim bar at the top or bottom of your site. Static, sticky or fixed, optionally pushing your content down instead of covering it. Choose whether it runs edge to edge with square corners, or floats as an inset message with a gap on all sides and rounded corners – the two never mix. Sets with hard edges can be softened per notice: keep their shadows and accent lines, swap everything for one thin outline, or go completely flat.
  • Fullscreen Notice – an accessible dialog for critical information, with focus management, scroll lock and keyboard support.

Scheduling that understands your year

  • Always active, exact date ranges (start/end with time), or yearly recurring periods.
  • Yearly periods may cross the year boundary – “December 24 until January 2” simply works, every year, including leap years.
  • All times use the timezone from Settings General. Visibility is computed on each page view, not via cron, so notices appear exactly on time.
  • A year calendar in the admin area shows all planned notices at a glance, including conflicts.

Fast to use

  • 27 ready-made templates – summer vacation, public holiday, maintenance window, shipping delay, new address, privacy policy update, product safety notice and more. Pick a situation and the notice is prefilled.
  • Quick Notice: publish a simple notice in seconds; refine it later in the full editor.
  • The editor shows what you build. Controls sit on the left, the rendered notice stays visible on the right while you change anything – with desktop, tablet and mobile widths and a light or dark sample page.
  • Ten style sets × five tones. Pick a look – from a bold solid bar to a soft tinted hairline, an elevated card, a dark surface or a neutral surface with a coloured accent rail – then pick how urgent it is: neutral, info, warning, important or success. Spacing, corners, borders and type come with the set.
  • Every one of the 50 combinations was checked against WCAG 2.2 AA contrast. Individual colours and spacing can still be overridden per notice.
  • Your theme’s font is used – no webfonts are loaded.

Thoughtful behavior

  • Visitors can dismiss a notice for the session, until the notice ends, or for a custom number of days – stored only in their browser, without cookies.
  • The close button can sit in the top right corner or vertically centred on the right edge, in three sizes, as a plain icon or in a circle.
  • When you edit a notice, previously dismissed notices reappear automatically (content versioning).
  • Show it again on demand. A “Show again” action in the notice list and in the editor voids every stored dismissal, so people who closed the notice see it once more. To check it yourself without affecting anyone, append ?d9notice_show=1 to any URL while logged in.
  • Priorities (0–100) and a global mode decide what happens when several notices overlap: show only the highest one or stack up to three bars. Conflicts are flagged in the list, the editor and the calendar.
  • Display rules: entire site, homepage only, selected content, or everything except selected content – plus context limits (front page, blog page, singular, archives, search, 404) and device visibility.

Multilingual

  • WPML and Polylang compatible (wpml-config.xml included). Untranslated notices are hidden or fall back to the default language – your choice.

Built properly

  • No external requests, no telemetry, no tracking, no cookies, no bundled frameworks, no jQuery on the frontend.
  • Frontend CSS/JS load only when a notice is actually displayed.
  • WCAG 2.2 AA oriented markup: named regions, real dialog semantics, focus trap, visible focus, reduced-motion support.
  • Custom capabilities plus a ready-made Notice Manager role, nonce-protected actions, strict input validation, escaped output.

Privacy

Desk9 Notice Planner does not collect, store or transmit any personal data. It makes no external requests, loads no external resources and sets no cookies. The optional dismiss feature stores the dismissal state exclusively in the visitor’s own browser (sessionStorage/localStorage, keys prefixed with d9notice:notice:); these entries expire automatically and can be removed by clearing the browser storage.

Screenshots

Installation

  1. Upload the plugin files to /wp-content/plugins/desk9-notice-planner/, or install the plugin through the WordPress plugins screen directly.
  2. Activate the plugin through the “Plugins” screen in WordPress.
  3. Go to Notices Add New (or Notices Quick Notice) to create your first notice.
  4. Enable the notice, choose a schedule and publish it.

FAQ

Why is my published notice not visible?

A notice is displayed only when all of these are true: it is published, “Enable this notice” is checked, its schedule is currently active, its display rules match the current page, and (on multilingual sites) it matches the visitor’s language. The computed status is shown in the notice list and in the Schedule box.

When exactly does a notice end?

The end is exclusive: a notice with end “January 2, 23:59” disappears at exactly 23:59. All times use the timezone configured under Settings General.

Can I use my own colours?

Yes. Every notice starts from a style set and a tone, which together define all fourteen colour slots. In the Design tab you can switch on “Override individual colours” and set any of them with the WordPress colour picker; fields you leave empty keep the colour of the set. Spacing, radius and typography can be fine-tuned the same way. There is no free-text CSS field – all values are validated and rendered as CSS custom properties.

My notice does not appear, or an old version keeps showing. Why?

Almost always a page cache: a caching plugin, your host’s built-in cache or a CDN stored a copy of the page before the notice was created, changed or ended, and keeps delivering that copy. Desk9 Notice Planner handles this in two ways. It asks known cache plugins to clear their cache whenever a notice changes, and – with cache-safe delivery (on by default, Settings > Advanced) – it checks for the current notices with a small request on every page view and corrects the page in the visitor’s browser. If a cached page was stored while the plugin was inactive, it does not contain the loader yet; clear the cache once (in your caching plugin or hosting panel) and every page stored from then on corrects itself.

I dismissed a notice myself and cannot get it back. What now?

Two ways, depending on what you want:

  • Only for you, to check something: append ?d9notice_show=1 to any URL of your site. While you are logged in and allowed to edit notices, dismissals are ignored for that single page view. Nobody else is affected.
  • For everyone who closed it: use the “Show again” row action in the notice list, or the “Show again for everyone” button in the notice editor under Dismissal. This raises the notice’s content version, which is part of the browser storage key, so every stored dismissal stops matching and the notice reappears.

Nothing is read from or written to a visitor’s device in either case – their old entry simply becomes irrelevant and expires on its own terms.

Does the plugin set cookies?

No. The optional dismiss feature stores a small entry in the visitor’s browser storage (sessionStorage or localStorage) under keys like d9notice:notice:123:v4. Nothing is transmitted anywhere, and the entry expires with the notice or the chosen duration. If browser storage is blocked, the notice simply stays visible.

Can somebody manage notices without being an administrator?

Yes. On activation the plugin creates a dedicated Notice Manager role. Assign it to a user and their admin area contains nothing but Dashboard, Media, Profile and Notices – they can write, schedule and publish notices and reach the plugin settings, but they cannot touch posts, pages, plugins, themes or other users.

The role holds every plugin capability plus read (needed to enter wp-admin at all) and upload_files (needed for the image field). If the role already exists, the plugin leaves it alone, so any adjustments you make with a role editor survive a reactivation.

You can also grant the capabilities to an existing role instead: edit_d9notices, edit_others_d9notices, publish_d9notices, delete_d9notices and manage_d9notice_settings for the settings screen.

The role is only deleted again if you enable “Remove the plugin capabilities …” under Notices Settings Advanced before uninstalling. Users keep their accounts either way.

Is the plugin compatible with WPML and Polylang?

Yes. The notice post type is registered as translatable, a wpml-config.xml defines which fields are translated and which are copied, and a setting controls whether untranslated notices are hidden or fall back to the default language. The plugin also works without any multilingual plugin.

Does it work with block themes?

Yes, classic and block themes are supported. For themes that do not call wp_body_open, a fallback output path is used.

What happens on uninstall?

Nothing is deleted unless you enabled “Delete all plugin data on uninstall” (and optionally “Remove plugin capabilities on uninstall”) under Notices Settings Advanced.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Desk9 Notice Planner – Announcement Bar & Scheduler” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.1.0

  • New: cache-safe delivery. A small request on every page view fetches the notices that apply to the page and corrects what a page cache, hosting cache or CDN delivered, so notices appear, change and disappear on time even when the page itself is cached. Can be switched off under Settings > Advanced.
  • New: known page caches (WP Super Cache, W3 Total Cache, WP Rocket, LiteSpeed Cache, WP Fastest Cache, Cache Enabler, WP-Optimize, Hummingbird, Breeze, SiteGround Optimizer, Nginx Helper, Autoptimize, WP Engine, Kinsta, Pantheon) are cleared whenever a notice is saved, published, unpublished, deleted or shown again. Other caches can hook the d9notice_purge_caches action.
  • New: the area around an inset bar can carry its own colour (“Area around an inset bar” under “Override individual colours”), so a floating bar can sit on the header colour instead of the page background.
  • New: outline width per notice (Design tab, “Edges & shadow”).
  • Fixed: every colour override now has a visible effect – a custom background replaces a set’s gradient, a custom border recolours the set’s outline, hairline and accent rail, and a custom secondary button text recolours the secondary button’s border.
  • Fixed: in announcement bars with longer text the close button wrapped onto its own row below the message. It is now anchored at the right edge of the bar on every screen size and never overlaps text or buttons.
  • New: close button options per notice (Design tab) – show or hide the button, position (top right corner or vertically centred), size (small, medium, large) and style (icon only or icon in a circle).
  • Fixed: the close button no longer overflows very tight bars with zero vertical padding.
  • Fixed: themes whose global styles colour or size bare paragraphs (“:root :where(p)”) overrode the notice text colour and font size on the page, while the editor preview showed the intended colour. Text inside a notice now always inherits from the notice.
  • Fixed: unticking “Bold headline” did not stick – the box re-ticked itself on the next load because an unticked checkbox was indistinguishable from a never-saved one.

1.0.0

  • Initial release: announcement bars and fullscreen notices, a dedicated Notice Manager role, date-range and yearly recurring scheduling in the site timezone, year calendar, Quick Notice with 27 templates, ten style sets with five semantic tones, a two-column editor with a permanently visible live preview, dismissal with content versioning, priorities and conflict detection, display rules, WPML/Polylang compatibility, accessibility-first frontend.