WebberZone Link Warnings v1.0.0: Accessible external link warnings, modal confirmations and more

External links change context. So do links that open in a new tab.

WordPress makes it easy to add target="_blank". What it does not do is warn the user about the context change. That gap reduces usability and can prove distracting to users.

I’ve noticed websites displaying interstitial pages before users navigate to new pages, and I want to implement this feature on WebberZone.

I built WebberZone Link Warnings and am releasing it for everyone. It is simple, user-friendly and completely free.

Let’s look at what WZLW could do.

WebberZone Link Warnings Banner

Available Warning Methods

The following five configurations are available from Settings > Link Warnings:

  • Inline indicators only
  • Modal dialog
  • Redirect screen
  • Inline indicators + modal dialog (the default)
  • Inline indicators + redirect screen

The default combines inline indicators with a modal. In practice, this combination works well on most sites: a visible cue and a click confirmation without requiring a separate page load.

Inline Indicators

WLW will append a visual icon or text label to the link, alongside screen reader text that announces the context change.

The icon is configurable: arrow variants (↗, →, ⬈), the external link symbol (⧉), emoji (🔗, 🌐), an asterisk, or a custom Unicode character you define.

To suppress the visual icon on a specific link while keeping the screen reader text and ARIA attributes, add the class wzlw-no-icon:

<a href="https://example.com" class="wzlw-no-icon">Link without icon</a>

Modal Dialog

Clicking an outbound link opens a confirmation dialog before navigation proceeds. Tab, Enter, and Escape all behave as expected. The modal title, message, and button labels are fully customisable.

This is what I’d recommend for most sites. It adds deliberate friction, which is exactly the point.

Link Warnings Modal dialog

Redirect Screen

For a more deliberate experience, the redirect screen shows an intermediate page with a countdown before forwarding to the external destination. The countdown is configurable from 0 to 60 seconds. Set to 0 to disable the timed redirect and require the user to click the Continue button on the redirect screen.

The page content is customisable. For full design control, copy the template to your-theme/webberzone-link-warnings/redirect-screen.php.

Scope and Exclusions

By default, it targets only outbound URLs. You can extend this to all target=”_blank” references regardless of whether the destination is internal or external.

Settings are organised across three tabs: General, Display, and Advanced.

The Advanced tab handles domain exclusions. Add trusted domains, and the system treats them as internal.

Affiliate-tracking domains, CDNs, and services you control are obvious candidates.

Post type selection in the General tab limits processing to specific content types.

Real sites are messy. One rule rarely fits all.

Performance and Privacy

I chose to process links at render time using WordPress’s native WP_HTML_Tag_Processor rather than regex-based manipulation. The overhead is minimal and predictable. Your stored content is never touched. Nothing is sent to third-party services.

Deactivate it, and everything returns to its original state.

Setup Wizard

On first activation, a guided wizard walks you through the warning method, link scope, indicator style, and exclusions. Skip it at any point and configure everything manually from Settings > WebberZone Link Warnings.

Getting Started

Fresh installation:

  1. Go to Plugins > Add New in your WordPress dashboard.
  2. Search for “WebberZone Link Warnings”.
  3. Click Install Now, then Activate.
  4. Follow the setup wizard, or go to Settings > WebberZone Link Warnings to configure manually.

Migrating from a custom snippet:

  1. Deactivate and remove your existing code.
  2. Install WebberZone Link Warnings from the plugin directory.
  3. Run the setup wizard.
  4. Review your modal or redirect wording to match your site’s tone.

Keep on publishing!

Leave a Reply

Your email address will not be published. Required fields are marked *