{"id":283704,"date":"2026-02-27T21:47:49","date_gmt":"2026-02-27T21:47:49","guid":{"rendered":"https:\/\/en-ca.wordpress.org\/plugins\/advanced-ad-blocker-fence\/"},"modified":"2026-02-27T21:55:07","modified_gmt":"2026-02-27T21:55:07","slug":"caphlabs-advanced-ad-blocker-fence","status":"publish","type":"plugin","link":"https:\/\/cl.wordpress.org\/plugins\/caphlabs-advanced-ad-blocker-fence\/","author":15364867,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"5.8","requires_php":"7.2","requires_plugins":null,"header_name":"CaphLabs - Advanced Ad Blocker Fence","header_author":"CaphLabs","header_description":"Block - ad blockers on your WordPress site. Ask visitors to disable their ad blockers to support your website.","assets_banners_color":"4e5573","last_updated":"2026-02-27 21:55:07","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/caphlabs-advanced-ad-blocker-fence\/","header_author_uri":"https:\/\/profiles.wordpress.org\/ipodguy79\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":278,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"ipodguy79","date":"2026-02-27 21:55:07"}},"upgrade_notice":{"1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3471381,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3471381,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3471381,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3471381,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3471381,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3471381,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3471381,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3471381,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3471381,"resolution":"5","location":"assets","locale":""},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3471381,"resolution":"6","location":"assets","locale":""}},"screenshots":{"1":"Settings page (all options)","2":"Grace warning tag (small notice before fence)","3":"Fence popup (title\/content\/buttons)","4":"Example of PRO version settings","5":"Example of PRO version settings","6":"Example of PRO version settings"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[148,2715,377,32709,12688],"plugin_category":[35],"plugin_contributors":[227757],"plugin_business_model":[],"class_list":["post-283704","plugin","type-plugin","status-publish","hentry","plugin_tags-adsense","plugin_tags-anti-adblock","plugin_tags-monetization","plugin_tags-patreon","plugin_tags-paywall","plugin_category-advertising","plugin_contributors-ipodguy79","plugin_committers-ipodguy79"],"banners":{"banner":"https:\/\/ps.w.org\/caphlabs-advanced-ad-blocker-fence\/assets\/banner-772x250.png?rev=3471381","banner_2x":"https:\/\/ps.w.org\/caphlabs-advanced-ad-blocker-fence\/assets\/banner-1544x500.png?rev=3471381","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/caphlabs-advanced-ad-blocker-fence\/assets\/icon-128x128.png?rev=3471381","icon_2x":"https:\/\/ps.w.org\/caphlabs-advanced-ad-blocker-fence\/assets\/icon-256x256.png?rev=3471381","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/caphlabs-advanced-ad-blocker-fence\/assets\/screenshot-1.png?rev=3471381","caption":"Settings page (all options)"},{"src":"https:\/\/ps.w.org\/caphlabs-advanced-ad-blocker-fence\/assets\/screenshot-2.png?rev=3471381","caption":"Grace warning tag (small notice before fence)"},{"src":"https:\/\/ps.w.org\/caphlabs-advanced-ad-blocker-fence\/assets\/screenshot-3.png?rev=3471381","caption":"Fence popup (title\/content\/buttons)"},{"src":"https:\/\/ps.w.org\/caphlabs-advanced-ad-blocker-fence\/assets\/screenshot-4.png?rev=3471381","caption":"Example of PRO version settings"},{"src":"https:\/\/ps.w.org\/caphlabs-advanced-ad-blocker-fence\/assets\/screenshot-5.png?rev=3471381","caption":"Example of PRO version settings"},{"src":"https:\/\/ps.w.org\/caphlabs-advanced-ad-blocker-fence\/assets\/screenshot-6.png?rev=3471381","caption":"Example of PRO version settings"}],"raw_content":"<!--section=description-->\n<p>Ad blockers can reduce the revenue that keeps your site running. <strong>CaphLabs - Advanced Ad Blocker Fence<\/strong> helps you respond in a user-friendly way:<\/p>\n\n<ul>\n<li>Detects common ad blocking behavior (including blocking Google Ad scripts).<\/li>\n<li>Optionally shows a <strong>small warning tag<\/strong> for a set number of adblocked page views (grace pages).<\/li>\n<li>Then displays a <strong>fence popup<\/strong> asking visitors to whitelist your site or disable their blocker.<\/li>\n<li>Includes optional <strong>refresh<\/strong> and <strong>close<\/strong> buttons, with configurable button text.<\/li>\n<li>Uses lightweight assets and can render in the <strong>footer<\/strong> or via <strong>wp_body_open<\/strong>.<\/li>\n<\/ul>\n\n<p>This plugin is designed to be simple to set up: enable it, write your message, decide your grace count, and you\u2019re done.<\/p>\n\n<h3>TESTED WITH:<\/h3>\n\n<ul>\n<li>\u2713 Adblock Plus<\/li>\n<li>\u2713 Adblock<\/li>\n<li>\u2713 ExpressVPN Keys<\/li>\n<li>\u2713 Tampermonkey<\/li>\n<li>\u2713 NordVPN <\/li>\n<li>\u2713 AdLock<\/li>\n<li>\u2713 Total Adblock<\/li>\n<li>\u2713 Adguard<\/li>\n<li>\u2713 Privacy Badger<\/li>\n<li>\u2713 Adremover<\/li>\n<li>\u2713 Adblock for Chrome\u2122<\/li>\n<li>\u2713 Brave<\/li>\n<li>\u2713 Surfshark CleanWeb<\/li>\n<li>\u2713 Ghostery<\/li>\n<li>\u2713 uBlocker<\/li>\n<li>\u2713 Pi-hole<\/li>\n<li>\u2713 uBlock Origin<\/li>\n<li>\u2713 Ultrablock<\/li>\n<li>\u2713 Privacy Badger<\/li>\n<li>\u2713 DuckDuckGo<\/li>\n<li>\u2713 Disconnect<\/li>\n<li>\u2713 Microsoft Edge AdBlock extension<\/li>\n<li>\u2713 Firefox Tracking Protection<\/li>\n<li>\u2713 uBlock Origin<\/li>\n<li>\u2713 Fair AdBlocker<\/li>\n<li>\u2713 Hola ad remover<\/li>\n<li>\u2713 Comodo AdBlocker<\/li>\n<li>\u2713 Opera Built-in AdBlock extension<\/li>\n<\/ul>\n\n<blockquote>\n  <p>Note: Ad blockers change frequently. The list above reflects testing on common blockers and privacy tools, but no detection method can guarantee 100% coverage forever.<\/p>\n<\/blockquote>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to external services:<\/p>\n\n<p>1) Google AdSense script (ad blocker detection)\nThis plugin loads https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js to detect when ad scripts are blocked. This helps determine whether an ad blocker is active.\nData sent: This plugin does not intentionally collect or transmit personal data as part of this detection.\nGoogle Terms: https:\/\/policies.google.com\/terms\nGoogle Privacy Policy: https:\/\/policies.google.com\/privacy<\/p>\n\n<p>2) Freemius checkout (optional Pro upgrade)\nThis plugin may link to Freemius hosted checkout pages if you choose to upgrade to the Pro version.\nData sent: If you click an upgrade\/trial link and complete checkout, information you provide during checkout is handled by Freemius.\nFreemius Terms: https:\/\/freemius.com\/terms\/<\/p>\n\nFreemius Privacy Policy: https:\/\/freemius.com\/privacy\/\n\n<h3>How it works (plain-English, step-by-step)<\/h3>\n\n<h3>1) The plugin loads your saved settings<\/h3>\n\n<p>Your settings are stored by the plugin and read on each request to decide whether to output the fence markup\/scripts and how to behave (grace count, button visibility, etc.).<\/p>\n\n<h3>2) Front-end CSS is loaded early (wp_head)<\/h3>\n\n<p>The plugin outputs its front-end CSS so the popup and grace tag can display correctly and immediately.<\/p>\n\n<h3>3) Front-end JavaScript is output (wp_footer or wp_body_open)<\/h3>\n\n<p>Depending on your setting (<strong>Include in Header<\/strong>), the plugin outputs the fence markup + JavaScript in one of these locations:<\/p>\n\n<ul>\n<li><strong>Default:<\/strong> <code>wp_footer<\/code> (most compatible)<\/li>\n<li><strong>Optional:<\/strong> <code>wp_body_open<\/code> (earlier output; requires theme support)<\/li>\n<\/ul>\n\n<p>If your theme does not support <code>wp_body_open<\/code>, the plugin safely falls back to the footer.<\/p>\n\n<h3>4) Detection runs in the browser<\/h3>\n\n<p>The plugin uses a practical \u201creal world\u201d detection approach:<\/p>\n\n<ul>\n<li>It attempts to load Google\u2019s Ads script (<code>adsbygoogle.js<\/code>).<\/li>\n<li>If the script is blocked or fails in certain ways, ad blocking is assumed.<\/li>\n<li>It also performs additional lightweight checks to handle blockers that intercept requests or alter responses.<\/li>\n<\/ul>\n\n<h3>5) Grace countdown (optional)<\/h3>\n\n<p>If <strong>Fence after (adblocked pages)<\/strong> is set above 0:<\/p>\n\n<ul>\n<li>The plugin shows a small warning tag (not the full popup) while the visitor is still within their grace limit.<\/li>\n<li>Once the visitor exceeds the grace limit on adblocked page views, the full fence popup appears.<\/li>\n<\/ul>\n\n<p>This helps avoid instantly \u201cslamming the door\u201d on first-time visitors while still protecting your monetization over time.<\/p>\n\n<h3>6) Fence popup behavior<\/h3>\n\n<p>When the popup is shown:<\/p>\n\n<ul>\n<li>Your <strong>Title<\/strong> and <strong>Content<\/strong> are displayed.<\/li>\n<li>The visitor can:\n\n<ul>\n<li>Click the <strong>Refresh<\/strong> button (if enabled) to reload after whitelisting<\/li>\n<li>Click the <strong>Close<\/strong> button (if enabled) to dismiss (depending on your configuration)<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h3>7) Reset countdown after X days (optional)<\/h3>\n\n<p>If the visitor stops triggering adblock detection for a while, the plugin can reset the grace counter after your configured number of days.<\/p>\n\n\n\n<h3>Settings page: Every option explained (point-by-point)<\/h3>\n\n<p>Go to: <strong>WP Admin \u2192 Settings \u2192 Advanced Ad Blocker Fence<\/strong> (or wherever your plugin places its menu entry).<\/p>\n\n<h3>Enable Fence<\/h3>\n\n<p>Turns the plugin on\/off. When disabled, the plugin does not show the fence.<\/p>\n\n<h3>Enable Noscript<\/h3>\n\n<p>Adds a <code>&lt;noscript&gt;<\/code> fallback message for users who have JavaScript disabled.<\/p>\n\n<p>Why it matters:\n- Adblock detection is primarily JavaScript-based.\n- A noscript message ensures users with JS disabled still see guidance.<\/p>\n\n<h3>Title<\/h3>\n\n<p>The headline shown on the fence popup.<\/p>\n\n<p>Tips:\n- Keep it short and clear (example: \u201cPlease support our site\u201d).\n- Avoid aggressive language; polite messaging improves whitelist rates.<\/p>\n\n<h3>Content<\/h3>\n\n<p>A small WYSIWYG editor for the popup body text.<\/p>\n\n<p>Use it to explain:\n- Ads help fund hosting\/content\n- How to whitelist your site (simple steps)\n- A friendly \u201cthank you\u201d<\/p>\n\n<p>Note:\n- The editor is intentionally lightweight (limited toolbar) to keep output clean.<\/p>\n\n<h3>Width (in %)<\/h3>\n\n<p>Controls how wide the popup content area is as a <strong>percentage<\/strong>.<\/p>\n\n<p>Examples:\n- 40 = compact popup\n- 60 = larger popup for more text\n- 80 = very wide popup (use carefully on mobile)<\/p>\n\n<h3>Fence after (adblocked pages)<\/h3>\n\n<p>This is your grace counter.<\/p>\n\n<ul>\n<li><strong>0<\/strong> = show the fence immediately on the first detected adblocked page view<\/li>\n<li><strong>3<\/strong> = show the warning tag for 3 adblocked page views, then fence on the next<\/li>\n<\/ul>\n\n<p>Recommended starting point:\n- 2\u20133 grace pages for content sites\n- 0 grace pages for high-monetization landing pages (use cautiously)<\/p>\n\n<h3>Reset countdown after (days)<\/h3>\n\n<p>If adblock is detected again after this many days without a warning, the countdown resets back to the full value.<\/p>\n\n<p>Examples:\n- 7 = weekly reset (reasonable default)\n- 30 = monthly reset<\/p>\n\n<h3>Show Refresh Button<\/h3>\n\n<p>When enabled, a \u201crefresh\u201d button is shown in the popup.<\/p>\n\n<p>Typical use:\n- Visitor whitelists your site\n- Visitor clicks refresh to reload the page cleanly<\/p>\n\n<h3>Refresh Button (Text)<\/h3>\n\n<p>Changes the refresh button label.<\/p>\n\n<p>Examples:\n- \u201cI whitelisted \u2014 refresh\u201d\n- \u201cRefresh page\u201d\n- \u201cTry again\u201d<\/p>\n\n<h3>Show Close Button<\/h3>\n\n<p>When enabled, shows a close\/dismiss button on the popup.<\/p>\n\n<p>Site owners often choose:\n- Enable close for softer approach (less friction)\n- Disable close for stricter enforcement<\/p>\n\n<h3>Close Button (Text)<\/h3>\n\n<p>Changes the close button label.<\/p>\n\n<p>Examples:\n- \u201cClose\u201d\n- \u201cNot now\u201d\n- \u201cContinue without ads\u201d (avoid promises you can\u2019t enforce)<\/p>\n\n<h3>Include in Header<\/h3>\n\n<p>If enabled, the plugin will attempt to output the fence JS earlier using <code>wp_body_open<\/code>.<\/p>\n\n<p>Important:\n- Your theme must support the <code>wp_body_open<\/code> hook\n- If not supported, the plugin automatically falls back to footer output<\/p>\n\n<h3>Minify JS<\/h3>\n\n<p>Enables an optional inline script packing toggle (where applicable) to reduce output size and make the front-end logic harder to fingerprint.<\/p>\n\n<p>Note:\nSome caching\/minify plugins already compress JavaScript globally. If you experience conflicts, disable this option and let your caching plugin handle optimization.<\/p>\n\n<h3>Branding<\/h3>\n\n<p>Free version includes a small \u201cPowered by\u201d style badge while the popup is open.<\/p>\n\n<p>\u201cBranding is optional \/ administrator opt-in\u201d And extremely appreciated &lt;3<\/p>\n\n<p>---<h3>Developer notes (hooks\/filters)<\/h3>\nThis plugin exposes filters that allow advanced users to alter behavior.<\/p>\n\n<p>If you are building custom integrations, you may encounter legacy filter names. Some are preserved for backward compatibility.<\/p>\n\n<p>Common examples include:\n- Minify toggle filter\n- Branding behavior filter\n- Icon and HTML icon customization filters<\/p>\n\n<p>(Exact hook names may differ by version\/build. If you rely on hooks, test after updating.)<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or upload the ZIP via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate <strong>Advanced Ad Blocker Fence<\/strong> through the <strong>Plugins<\/strong> menu.<\/li>\n<li>Go to the plugin settings page.<\/li>\n<li>Enable the fence and configure your message and grace count.<\/li>\n<li>Test in an incognito\/private window with an ad blocker enabled.<\/li>\n<\/ol>\n\n<h3>Recommended testing workflow<\/h3>\n\n<ul>\n<li>Open your site in a private window with <strong>uBlock Origin<\/strong> enabled<\/li>\n<li>Visit 2\u20134 pages (depending on your grace setting)<\/li>\n<li>Confirm the warning tag appears first (if grace &gt; 0)<\/li>\n<li>Confirm the popup appears after grace is exceeded<\/li>\n<li>Disable the blocker and use the refresh button to verify recovery<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20don%E2%80%99t%20i%20see%20the%20popup%20when%20i%E2%80%99m%20using%20an%20ad%20blocker%3F\"><h3>Why don\u2019t I see the popup when I\u2019m using an ad blocker?<\/h3><\/dt>\n<dd><p>Common causes:\n- You have aggressive page caching serving a cached \u201cnon-adblock\u201d version.\n- Your theme does not support <code>wp_body_open<\/code> and you forced header output.\n- Another plugin is combining\/minifying scripts in a way that breaks inline JS.<\/p>\n\n<p>Fix:\n- Temporarily disable cache\/minify, then retest.\n- Use footer output mode for best compatibility.\n- Clear Cloudflare\/CDN cache if applicable.<\/p><\/dd>\n<dt id=\"what%20is%20%E2%80%9Cgrace%20pages%E2%80%9D%20and%20why%20would%20i%20use%20it%3F\"><h3>What is \u201cgrace pages\u201d and why would I use it?<\/h3><\/dt>\n<dd><p>Grace pages lets visitors browse a few adblocked pages with only a small warning tag before the full fence appears. It\u2019s a friendlier approach that can improve retention while still encouraging whitelisting.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20block%20content%20completely%3F\"><h3>Does the plugin block content completely?<\/h3><\/dt>\n<dd><p>It can enforce a popup\/fence overlay. Exact strictness depends on your settings (for example, whether you allow a close button).<\/p><\/dd>\n<dt id=\"will%20this%20work%20with%20every%20ad%20blocker%20forever%3F\"><h3>Will this work with every ad blocker forever?<\/h3><\/dt>\n<dd><p>No plugin can guarantee permanent 100% detection coverage because blockers evolve. This plugin uses practical detection and is tested against common blockers, but it may require updates over time.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20message%20and%20buttons%3F\"><h3>Can I change the message and buttons?<\/h3><\/dt>\n<dd><p>Yes. Title, content, and button labels are configurable from the settings page.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20mobile%3F\"><h3>Does it work on mobile?<\/h3><\/dt>\n<dd><p>Yes. The popup is styled to work on responsive layouts. Adjust \u201cWidth (in %)\u201d if you need a tighter mobile feel.<\/p><\/dd>\n<dt id=\"my%20theme%20doesn%E2%80%99t%20have%20wp_body_open.%20is%20that%20a%20problem%3F\"><h3>My theme doesn\u2019t have wp_body_open. Is that a problem?<\/h3><\/dt>\n<dd><p>No. If the theme does not support <code>wp_body_open<\/code>, the plugin falls back to the footer automatically.<\/p>\n\n<\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release<\/li>\n<li>Adblock detection + grace pages<\/li>\n<li>Customizable title\/content\/buttons<\/li>\n<li>Footer\/wp_body_open output modes<\/li>\n<li>Optional noscript support<\/li>\n<\/ul>","raw_excerpt":"Detect ad blockers and show a clean, customizable \u201csupport us\u201d fence (popup) after a configurable grace countdown.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/283704","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=283704"}],"author":[{"embeddable":true,"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ipodguy79"}],"wp:attachment":[{"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=283704"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=283704"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=283704"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=283704"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=283704"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=283704"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}