← All posts

Placing your first ad zones without breaking your layout

A practical guide to creating ad posts in WB Ad Manager, choosing from the 16+ built-in placement hooks, and getting ads live without touching theme code.

One of the reasons ad management on WordPress has a reputation for being fiddly is that most approaches require theme edits - inserting PHP snippets into header.php, registering widget areas, or pasting shortcodes into every post template. WB Ad Manager takes a different approach: the plugin ships 16 or more placement hooks that attach to standard WordPress action hooks. You create an ad post, assign it a placement, and it renders. No theme edits required.

This guide covers the full flow from creating your first ad to verifying it is live, then walks through the placement options so you can pick the right one without trial and error.

Step 1: Install and activate the plugin

Install WB Ad Manager from WordPress.org or from your Wbcom account. Activate it from the Plugins screen. No setup wizard is required - you can create ads immediately after activation.

The plugin adds an Ads menu to wp-admin. You will also see a Cloaker section if the link cloaking feature is active, and a Classifieds section if classifieds are enabled. Each feature is independent.

Step 2: Create your first ad post

Go to Ads > Add New Ad. The editor screen has three sections worth understanding:

Ad content. This is where you choose the ad type and add the creative. Five types are available:

Ad typeUse it when
Image bannerYou have a JPG, PNG, or WebP graphic and a destination URL
HTML adThe sponsor provides custom creative (a responsive div, for example)
Code adYou are pasting an ad tag from AdSense, Ezoic, or another network
Text adA simple title + description + URL, no image
Native / in-articleEditorial-looking ad that matches post styling

For a direct sponsor’s banner, Image banner is the right type. For AdSense, use Code ad and paste your AdSense script tag into the code field.

Scheduling. Set a start date and end date if the campaign has defined run dates. If you are testing or running an evergreen house ad, leave the dates empty and the ad runs indefinitely while published.

Frequency cap. Optionally set a maximum number of times the ad displays per visitor per session. Useful for avoiding over-exposure on sites with long average session durations.

Placement. Choose where the ad appears on the site. This is the most important setting, covered in detail below.

Tracking. Impression counting and click counting are on by default. Every ad view and every click is recorded server-side without any external pixel. Stats are visible under Ads > Reports.

Step 3: Choose the right placement

The 16+ built-in placements cover the locations advertisers actually care about. Here is the full list grouped by area:

Content placements

  • Before post content - appears above the first paragraph of any post or page
  • After post content - appears below the last paragraph, above comments
  • Inside post content - after 1st paragraph - inserted after the first paragraph, the highest-attention in-article position
  • Inside post content - after 2nd paragraph - slightly further down for a second in-article unit
  • Inside post content - after 3rd paragraph - appropriate for longer posts where the reader is committed

In-content placements are the highest-converting positions for most niche publishers. The “after 1st paragraph” slot routinely outperforms sidebars by 2-3x in click-through rate on editorial content.

  • Sidebar widget (slots 1, 2, 3) - three separate widget-area positions in the sidebar. You assign different campaigns to each slot independently.

Global placements

  • Header bar - a full-width bar above the site header, visible on every page. High visibility, appropriate for sitewide announcements or high-paying sponsor campaigns.
  • Footer bar - full-width bar at the bottom of every page.

Archive and listing placements

  • Between posts in archive listing - ads appear inline in the post list view, between the N-th and N+1-th post. Configurable for which position in the list.
  • Above comments - appears between post content and the comments section
  • Below comments - appears after the last comment

Community placements (optional integrations)

  • BuddyPress activity feed - if BuddyPress is active, ads render between activity items in the main feed
  • bbPress topics - if bbPress forums are active, ads render in topic threads

Choosing placement without breaking layout

Two placements cause layout issues more than any others, and both are avoidable with one check:

Sidebar widget placements require that your theme has a registered sidebar. If your theme uses a full-width layout without a sidebar widget area, sidebar placement ads will not render visibly - they are technically placed but have nowhere to render. Verify your theme has an active sidebar before using these placements.

Header bar and footer bar placements add a full-width element that inherits zero theme styling. On sites with complex header layouts (sticky headers, mega menus), the header bar can push the navigation down in unexpected ways on mobile. Test at 390px viewport width after enabling the header bar.

For the content placements (before/after/inside post), layout conflicts are rare because the plugin inserts into standard WordPress content hooks that themes are designed to handle.

Step 4: Publish and verify

Set the ad to Published and view a post that the placement applies to. The ad should render in the position you selected.

If it does not appear, check:

  1. Is the post type correct? By default, in-content placements apply to the post post type. If you want ads on Pages or a custom post type, check the placement settings for post type controls.
  2. Is a caching plugin serving a stale page? Clear the cache and reload.
  3. Does an ad blocker explain the absence? Test in a browser profile without an ad blocker active or with ad blocker disabled for the domain. Server-side impression counting still works even when the creative is blocked client-side, but you will not see the visual ad.
  4. Are start/end dates set correctly? If the start date is in the future, the ad will not render until that date arrives.

Step 5: Run multiple campaigns in one slot

You can assign multiple ads to the same placement. When more than one active ad targets the same placement, WB Ad Manager rotates them. The rotation is even by default - each ad gets equal share of impressions.

This is the mechanism for running:

  • Direct sponsor campaigns in rotation (three sponsors sharing a sidebar slot)
  • An AdSense code ad as a fallback when direct campaigns are not active (AdSense fills the slot, direct campaigns override during their scheduled run)
  • A/B tests between two creatives for the same campaign (use impression data from Reports to compare performance)

The AdSense + direct hybrid is the most common configuration for publishers moving from purely programmatic to mixed monetization. The setup: create an Image banner (or HTML) ad for your direct campaign with a start and end date. Create a Code ad with your AdSense tag and leave the dates empty. Assign both to the same placement. During the direct campaign’s run dates, WB Ad Manager serves the direct ad. When the campaign ends, AdSense automatically fills the slot again.

No manual intervention is required when campaigns start or end.

Reading the impression and click reports

After the ad has been live for a few days, Ads > Reports shows per-campaign stats:

  • Total impressions and clicks for the period
  • CTR (click-through rate) per ad
  • Geographic breakdown (country-level)
  • Device breakdown (desktop vs. mobile vs. tablet)

You can export per-campaign data as CSV to include in reports to direct sponsors. The data is server-side - it counts based on the ad rendering in the browser, not on a pixel load, which makes it more reliable than purely client-side tracking (particularly for users with privacy-focused browsers).

Quick reference: placement decisions

You wantUse this placement
High-attention in-article unitInside post content - after 1st paragraph
Sitewide always-visible bannerHeader bar
Rotating sponsor bannersSidebar widget slot 1, 2, or 3
End-of-article CTA or sponsor noteAfter post content
AdSense fallback with direct overrideCode ad + direct ad, same placement
Community site feed sponsorBuddyPress activity feed

For publishers running a direct ad sales pipeline - handling inquiries, insertion orders, invoicing, and renewal - our post on automating the ad sales pipeline covers the ops layer that complements the placement setup covered here.