Release notes / WB Ad Manager
Free Plugin Plugin

WB Ad Manager

Running affiliate links and display ads usually means two plugins and two things to break. WB Ad Manager replaces both with one free install: 16+ placements, click tracking, geo-targeting, AdSense ready. Pro adds a classifieds marketplace.

11 releases
v3.1.0 latest
August 5, 2026 shipped

v3.1.0 Latest

August 5, 2026
New 1 Improve 1 Fix 9 Dev 2 Compat 1

New

  • Ad tags. Group ads by sponsor, season, format or anything else, with as many tags on one ad as you need. Filter the ads list by tag, then use the existing Enable or Disable bulk actions to act on that whole group at once.

Improve

  • The BuddyPress and Jetonomy notices appear on the ads list only, instead of stacking above the form on every Settings tab.

Fix

  • Rich Content ads render again. The type name was normalized so saved ads using older slug variants resolve to the same handler.
  • Ads rendered directly by ID now respect the full delivery gate set, including schedule, frequency caps and geo targeting, matching rotation-served ads.
  • An ad whose creative is missing or broken gives up its slot to the next eligible ad instead of rendering an empty space.
  • Partnership links no longer advertise the cloaked URL when link cloaking is turned off.
  • Ads rendered by the placement shortcode keep their configured spacing, and the ads-list tag filter shows clean counts.
  • A click on an ad is recorded once when WB Ad Manager Pro is active, not twice, so click counts and click-based billing are no longer doubled.
  • The ads list Impressions and Clicks columns include aggregated daily rows, so they agree with Ad Analytics instead of dropping to zero once older events roll up.
  • Finishing the Pro setup wizard clears the free plugin's "Run Setup Wizard" prompt as well.
  • Saving Placements no longer clears which slots may be sold to advertisers. The Advertisers column is hidden when Pro is absent, and a hidden column previously read as "sell nothing", so a site that saved Placements with Pro deactivated could not sell any slot when Pro came back.

Dev

  • New wbam_ad_tag taxonomy on the ad post type, flat, admin-only, with term management gated on manage_options and assignment on edit_posts. Registration arguments are filterable through wbam_ad_tag_taxonomy_args.
  • Uninstall now removes ad tag terms. WordPress leaves terms behind when a taxonomy stops being registered, so they would otherwise persist invisibly.

Compat

  • Aligned with WB Ad Manager Pro 3.1.0. Install both updates together; the Pro Ad Folders screen builds on this release's tags and menu.

v3.0.0

July 29, 2026
New 5 Improve 5 Fix 8 Security 3 Dev 5 Compat 1

New

  • Ad slot control. Choose which placements your site uses, and separately which of those advertisers may sell into. Closing a site slot stops delivery; closing an advertiser slot only removes it from their picker, so a creative someone already paid for keeps running. An empty list means every placement, so nothing changes until you tick something.
  • Email Captures admin screen: view, export to CSV, and delete (for GDPR erasure) the leads collected by the Email Capture ad type, plus a GET /wbam/v1/email-captures REST endpoint. Previously the captured names and emails were stored with no way to see or remove them.
  • Link Cloaking settings section lets you set the cloak URL prefix and choose what happens to inactive or expired links (404, homepage, or a custom URL). These were read at runtime but had no way to configure them before.
  • Total impression cap on the ad Schedule, so an ad automatically stops serving after a set number of impressions.
  • Ad disclosure label now renders above or below each ad when a label is set in Display settings.

Improve

  • Redesigned admin: every screen now shares one consistent design system (cards, tokens, buttons), and the WB Ad Manager submenu is grouped into labelled sections.
  • Admin list tables now use that same design system for spacing and headers, so a list screen and a settings screen read as one product.
  • Confirmation prompts are now in-page dialogs rather than browser alerts, and they no longer block the page while open.
  • Link Manager is now an optional module you can turn off if you only need ad rotation.
  • Accessibility: admin form fields are properly labelled and controls show a visible focus outline.

Fix

  • Link click tracking now works again for non-cloaked links (a script variable mismatch stopped clicks from recording), and the REST link tracking and category endpoints record and count correctly.
  • Cloaked links reach external destinations again instead of being blocked as unsafe redirects.
  • An ad now goes live when you publish it, without needing a second save.
  • Resolved HTTP 500 errors on the placements and ad-types REST endpoints, and invisible icons in the Setup Wizard.
  • Links admin screens now link to the correct menu parent instead of a 403 page.
  • Settings fields no longer touch their card border, and the BuddyPress directory placement count is corrected to 4 (before and after members and groups).
  • The plugin zip now bundles its vendor assets, fixing a missing-icon 404, and the Link Partnership form follows dark mode on BuddyX 5.1+ and Reign.
  • The ad sizing summary now reflects only the placements you ticked, the placement matrix stacks correctly on mobile, and video ads no longer show size panels that do not apply to them.

Security

  • The setup wizard now checks permissions. It rendered from an early hook that runs before WordPress applies the capability attached to its menu, and matched on the page parameter alone, so any logged-in user could open it and create sample ads. Sites that already completed setup were not affected.
  • The public ads REST endpoint no longer exposes disabled ads.
  • Link bulk actions and admin notice dismissal now verify capability alongside the existing nonce.

Dev

  • Removed three settings toggles that did nothing (minimum content length, cache ads, lazy load) and the unused settings-filter framework; impressions are now counted atomically so caps cannot over-deliver.
  • Added an atomic impression-claim and per-visitor view recording to the frequency manager so in-stream video players can enforce session and total-impression caps per ad break.
  • New Placement_Engine::get_selectable_placements() is the single source of truth for which slots may be offered, so the ad editor, the advertiser portal, the REST route and the Abilities endpoint can no longer disagree.
  • Shared toast/confirm toolkit and wp-pointer emitter now live here and are consumed by Pro, replacing two copies of each.
  • Database: added visitor_hash and referrer columns to the link-clicks table (DB version 1.7.0, applied automatically on update); the rate-limits table is dropped on uninstall.

Compat

  • Pairs with WB Ad Manager Pro 3.0.0. If you run Pro, update both together.

v2.9.0

June 25, 2026
New 2 Improve 1 Fix 1 Dev 1

New

  • Dark mode for all frontend ad, link, and partnership output. The plugin adopts your theme's dark palette automatically instead of staying light on a dark site.
  • Right-to-left stylesheet for frontend output, so ads and link blocks lay out correctly on Arabic, Hebrew, and other RTL sites.

Improve

  • Frontend styling now inherits BuddyX 5.1+ and Reign color tokens, so ad blocks match the active theme out of the box.

Fix

  • Dark mode now engages when BuddyX 5.1+ or Reign switch to dark with their runtime toggle, not only on the older theme setting.

Dev

  • Clean pass on WordPress Plugin Check (zero errors and warnings) and PHPStan level 7, plus a documented RTL stylesheet load.

v2.8.1

Improve 1 Fix 2

Improve

  • The Google AdSense script is now loaded only on pages that actually display an AdSense ad. Pages with no AdSense ad no longer pay for the extra script request - faster page loads and a cleaner Lighthouse score across the rest of the site.

Fix

  • A/B test winners are now declared only when one variant beats the other by a meaningful margin. Previously the dashboard could flag a winner when the two variants were within normal click-rate noise, so admins could be misled into picking a variant that wasn't actually better.
  • The analytics dashboard now records the visitor's device type (desktop / mobile / tablet) on every event. The "Device" breakdown chart now reflects real traffic instead of showing every event as Unknown.

v2.8.0

New 9 Improve 2 Fix 1

New

  • Jetonomy integration module with 7 placement positions: sidebar (top / after About card / bottom), after topic body, before / between / after replies. Requires Jetonomy v1.3.0+.
  • Admin notice suggesting Jetonomy installation when not detected, with direct link to https://store.wbcomdesigns.com/jetonomy/
  • REST API (21 routes across ads, analytics, links, partnerships) and WordPress Abilities API (15 abilities)
  • Full Lucide icon migration across admin and frontend. Replaces dashicons with a consistent icon set that renders at any size without pixelation
  • Semantic CSS token layer with theme.json inheritance and prefers-color-scheme dark-mode override across 9 stylesheets. Plugin now re-skins automatically to the active theme's palette
  • Email Capture ad type documented and surfaced. Inline newsletter subscribe form with customisable colours, optional name field, and wbam_email_captured action for Mailchimp / ConvertKit / webhook integrations
  • Link Partnerships admin module. [wbam_partnership_inquiry] shortcode, admin list with accept/reject workflow, automatic email notifications, 24-hour duplicate-submission window
  • Before Archive / After Archive placements (loop_start / loop_end)
  • Four BuddyPress directory placements. Before / after members and before / after groups

Improve

  • Third-party admin notices are now suppressed on WB Ad Manager screens only (keeps your own notices intact, other admin pages unaffected)
  • Setup wizard is now fully self-contained. Renders correctly regardless of the active theme or admin-chrome state

Fix

  • WordPress.org hardening pass. Zero PCP errors on clean dist, all admin $_POST / $_GET reads wrapped in wp_unslash() before sanitization

v2.7.0

Improve 1 Compat 1

Improve

  • Updated translation strings

Compat

  • Tested up to WordPress 6.9

v2.6.0

New 2 Improve 3 Fix 1 Dev 1

New

  • Complete rewrite of upgrade page with comprehensive Free vs Pro comparison
  • 47 features across 9 sections (Ad Management, Link Management, Advertiser Portal, Payments, Analytics, Classifieds, Developer, Support)

Improve

  • Add CSS variables with multi-theme dark mode support to partnership form
  • Frontend CSS for link shortcodes ([wbam_link] and [wbam_links])
  • Comprehensive documentation with screenshots

Fix

  • Distribution excludes development files

Dev

  • Updated POT file for translations

v2.5.0

Improve 3 Fix 2 Dev 1

Improve

  • Add npm scripts for build/dist/watch commands
  • Fix Gruntfile makepot config for correct plugin name
  • Add future roadmap for planned features

Fix

  • Add GDPR privacy helper for IP anonymization in frequency tracking
  • Frequency tracking now properly calls track_impression via wbam_ad_output filter

Dev

  • Update POT file for translations

v2.4.0

New 1 Improve 2 Fix 11 Security 5

New

  • Comprehensive marketing materials included

Improve

  • Add object caching for placement ad queries
  • Cache table existence checks to avoid repeated queries

Fix

  • Impressions not being recorded properly
  • Image upload/remove button functionality
  • Paragraph placement HTML corruption with preg_replace_callback
  • wp_send_json_error signature and add missing HTTP status codes
  • Raw $_POST passed to hooks before sanitization
  • Geo targeting UI simplified with single mode selector
  • Device detection reliability improvements
  • Image ad UI with proper container width constraints
  • Display Rules UI clarity and organization
  • Specific Pages dropdown now only shows pages
  • 16 additional bugs from comprehensive audit

Security

  • GDPR compliance - stop storing raw IP addresses in analytics
  • Add user-based rate limiting to AJAX handlers
  • Add capability check to setup wizard dismiss handler
  • Document security model for unescaped ad output in placements
  • Add security measures for code ad type

v2.0.0

Note 13

Note

  • Complete rewrite with modern architecture
  • Ad rotation and split testing with weighted priority system
  • 4 ad types: Image, Rich Content, Code, Google AdSense
  • 14+ placement options including sticky, popup, and comment ads
  • Google AdSense integration with Auto Ads support
  • BuddyPress integration (activity stream, directories, widgets)
  • bbPress integration (forums, topics, replies)
  • targeting with 3 IP providers
  • Device, schedule, and user targeting
  • Frequency control and ad priority
  • Setup wizard with sample ads
  • Full internationalization support
  • 4 style namespaces and modular architecture

v1.0.0

Note 1

Note

  • Legacy version