One modal for first time visitors
Welcome Splash is the oldest plugin on this site, April 2013. Back then it was a full-screen opt-in form you pasted your email provider’s code into. The 2.0.0 build is a different and smaller thing: a modal with a title, a short message and one button, shown to a visitor the first time they arrive and then not again for as long as you say. No builder, no template gallery, no form.
The settings page
Everything is under Settings, Welcome Splash.
- Enable, title, text (basic HTML allowed)
- Button text and URL; leave the URL empty and the button just closes the splash
- Open the link in a new tab
- Delay in seconds, so the page loads before the splash does
- Days before showing again, where 0 means once per browser session
- Front page only or every page
- Button colour
Save, then open your site in a private window. If you would rather not log out, append ?welcome-splash=preview to any URL while logged in as an administrator and the splash is forced open.
How it remembers
When a visitor closes the splash, a welcome_splash_seen cookie is set carrying a hash of the current title, text and URL. Edit any of those and the hash changes, so everyone sees the new version once more. That is the whole memory system; no database rows per visitor, nothing sent anywhere. The modal markup is printed in the footer with hidden and the stylesheet and script are only loaded on pages where the splash can appear. When the plugin is disabled, nothing is added to the page at all.
Closing it
The X, the backdrop, the button or the Escape key. The dialog has role="dialog" and aria-modal, and focus moves to the button when it opens, so a keyboard user can press Enter and be on their way. It was checked at 390 px with no horizontal overflow.
Rules beyond front page or everywhere
There are none in the settings. For anything else, say only on posts in one category or never for logged-in users, use the welcome_splash_should_show filter and return false. If you want the old opt-in form, use your email provider’s embed inside a page and point the button at it; the splash will not collect addresses itself. Needs WordPress 5.0 and PHP 7.4; tested on WordPress 7.1.4 with PHP 8.3.






