[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f5P-YhvBh5PlnPWdeEQoKYRRwp1y03KbBTm6OsFXL5P4":3},{"slug":4,"display_name":5,"profile_url":6,"plugin_count":7,"total_installs":8,"avg_security_score":9,"avg_patch_time_days":10,"trust_score":11,"computed_at":12,"plugins":13},"myththrazz","MythThrazz","https:\u002F\u002Fprofiles.wordpress.org\u002Fmyththrazz\u002F",2,10,100,30,94,"2026-08-29T03:12:01.417Z",[14,36],{"slug":15,"name":16,"version":17,"author":5,"author_profile":6,"description":18,"short_description":19,"active_installs":8,"downloaded":20,"rating":21,"num_ratings":21,"last_updated":22,"tested_up_to":23,"requires_at_least":24,"requires_php":25,"tags":26,"homepage":32,"download_link":33,"security_score":9,"vuln_count":21,"unpatched_count":21,"last_vuln_date":34,"fetched_at":35},"tiny-simple-adblock-detector","Tiny Simple AdBlock Detector","1.2.0","\u003Cp>Over 40% of internet users run an ad blocker. \u003Cstrong>Tiny Simple AdBlock Detector\u003C\u002Fstrong> gives you the power to respond — politely ask visitors to whitelist your site, gate premium content, or simply track awareness — all without touching a line of JavaScript yourself.\u003C\u002Fp>\n\u003Ch3>How it works\u003C\u002Fh3>\n\u003Cp>The plugin loads a tiny decoy script with a filename that ad blockers love to block. When the script gets blocked, a lightweight CSS class swap kicks in — revealing or hiding any element you’ve marked up. That’s it. No jQuery, no external services, no tracking pixels, no cookie banners.\u003C\u002Fp>\n\u003Ch3>Two CSS classes. Infinite possibilities.\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Ccode>class=\"show-only-when-adblock\"\u003C\u002Fcode> — Element appears \u003Cstrong>only\u003C\u002Fstrong> when an ad blocker is active.\u003C\u002Fli>\n\u003Cli>\u003Ccode>class=\"hide-only-when-adblock\"\u003C\u002Fcode> — Element disappears when an ad blocker is active.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Add them to any HTML element: a \u003Ccode>\u003Cdiv>\u003C\u002Fcode>, a Gutenberg block, an Elementor section, a WooCommerce notice — anything.\u003C\u002Fp>\n\u003Ch3>Real-world examples\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>“Please whitelist us”\u003C\u002Fstrong> — Show a polite banner only to ad-blocking visitors\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Content gating\u003C\u002Fstrong> — Hide exclusive articles or downloads from users blocking your ads\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Alternative monetization\u003C\u002Fstrong> — Show a “Support us on Patreon” box only when ads are blocked\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Analytics\u003C\u002Fstrong> — Pair with your analytics tool to track ad-blocker adoption rates on your site\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Why this plugin?\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Zero configuration\u003C\u002Fstrong> — Activate it and it works. No settings page, no wizard, no API key.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Ridiculously lightweight\u003C\u002Fstrong> — Under 2 KB of JavaScript. Your visitors won’t notice.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>No external requests\u003C\u002Fstrong> — Nothing leaves your server. Fully GDPR-friendly.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Works with all major ad blockers\u003C\u002Fstrong> — uBlock Origin, AdBlock Plus, AdBlock, AdGuard, Brave Shield, Opera built-in blocker.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Page builder compatible\u003C\u002Fstrong> — Works with Gutenberg, Elementor, Divi, WPBakery, Beaver Builder — anything that lets you add a CSS class.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Built-in debug mode\u003C\u002Fstrong> — Append \u003Ccode>?tsad_debug=1\u003C\u002Fcode> to any URL to see live detection results.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Translation-ready\u003C\u002Fstrong> — Includes Polish translation. PRs welcome for others.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>From the maker of WP Multi Tool\u003C\u002Fh3>\n\u003Cp>This plugin is built by the same developer behind \u003Ca href=\"https:\u002F\u002Fwpmultitool.com\u002F\" rel=\"nofollow ugc\">WP Multi Tool\u003C\u002Fa> — the Swiss Army knife for WordPress developers and site administrators. If you manage multiple WordPress sites, check it out.\u003C\u002Fp>\n","Detect ad blockers in 2 KB. Show or hide any content depending on whether your visitor uses an ad blocker — zero config, no external requests, no perf &hellip;",1854,0,"2026-03-30T20:28:00.000Z","7.0.2","5.0","7.4",[27,28,29,30,31],"ad-blocker","adblock","ads","content","detect","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Ftiny-simple-adblock-detector\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftiny-simple-adblock-detector.1.2.0.zip",null,"2026-07-22T17:31:50.256Z",{"slug":37,"name":38,"version":39,"author":5,"author_profile":6,"description":40,"short_description":41,"active_installs":21,"downloaded":42,"rating":21,"num_ratings":21,"last_updated":43,"tested_up_to":23,"requires_at_least":44,"requires_php":45,"tags":46,"homepage":52,"download_link":53,"security_score":9,"vuln_count":21,"unpatched_count":21,"last_vuln_date":34,"fetched_at":35},"zero-blocks-given","Zero Blocks Given","1.3.2","\u003Cp>Most WooCommerce stores ship 80-150 KB of block CSS and JS that the store never actually renders. The WC \u003Ccode>BlockPatterns\u003C\u002Fcode> scanner is the one that bugs me most – it hits the filesystem on every request to scan a directory of pattern templates you don’t use. Then add core WP \u003Ccode>global-styles\u003C\u002Fcode>, \u003Ccode>wp-block-library\u003C\u002Fcode> and font-faces on top, and you’re loading a Gutenberg frontend you probably switched off a long time ago.\u003C\u002Fp>\n\u003Cp>Zero Blocks Given turns it off at the source, through WooCommerce’s own dependency injection container. No CSS dequeue band-aid, no UI checkboxes, no PRO upsell. One constant in \u003Ccode>wp-config.php\u003C\u002Fcode>, pick a tier, done.\u003C\u002Fp>\n\u003Ch3>How it works\u003C\u002Fh3>\n\u003Cp>Here’s the thing – WC registers its block hooks as closures wrapping instance methods on container-managed objects. So you can’t \u003Ccode>remove_action()\u003C\u002Fcode> them by string. You have to fetch the same instance back from the DI container and pass it in as the callable. That’s what this does:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$bp = \\Automattic\\WooCommerce\\Blocks\\Package::container()->get( BlockPatterns::class );\nremove_action( 'init', [ $bp, 'register_block_patterns' ] );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>The DI-container path is the one that survives WC upgrades cleanly. String-callback matching and dequeue tricks tend to drift every release, so I went with the container.\u003C\u002Fp>\n\u003Ch3>Five modes. Three ways to set them.\u003C\u002Fh3>\n\u003Cp>  Mode\u003Cbr \u002F>\n  What it turns off\u003Cbr \u002F>\n  When to use it\u003C\u002Fp>\n\u003Cp>  \u003Ccode>patterns\u003C\u002Fcode>\u003Cbr \u002F>\n  WC \u003Ccode>BlockPatterns\u003C\u002Fcode> directory scanner only\u003Cbr \u002F>\n  Block-based Cart\u002FCheckout – keeps all blocks rendering, just skips the file-I\u002FO scan\u003C\u002Fp>\n\u003Cp>  \u003Ccode>blocks\u003C\u002Fcode>\u003Cbr \u002F>\n  \u003Ccode>patterns\u003C\u002Fcode> + \u003Ccode>BlockTypesController\u003C\u002Fcode> + \u003Ccode>Notices\u003C\u002Fcode> styles + \u003Ccode>wc-blocks-style\u003C\u002Fcode> handle\u003Cbr \u002F>\n  Classic-shortcode WC stores\u003C\u002Fp>\n\u003Cp>  \u003Ccode>keep-styles\u003C\u002Fcode>\u003Cbr \u002F>\n  \u003Ccode>blocks\u003C\u002Fcode> + WC Product Filter pattern scan (\u003Ccode>ProductFilterAttribute\u003C\u002Fcode>)\u003Cbr \u002F>\n  Stores that don’t use WC blocks but keep Gutenberg styling – kills the expensive scans, leaves \u003Ccode>global-styles\u003C\u002Fcode> and core block rendering alone. Pixel-perfect.\u003C\u002Fp>\n\u003Cp>  \u003Ccode>all\u003C\u002Fcode>\u003Cbr \u002F>\n  \u003Ccode>keep-styles\u003C\u002Fcode> + WP \u003Ccode>global-styles\u003C\u002Fcode> pipeline + \u003Ccode>theme.json\u003C\u002Fcode> + font-faces + head \u003Ccode>\u003Cstyle>\u003C\u002Fcode> strip\u003Cbr \u002F>\n  Sites with no Gutenberg frontend at all\u003C\u002Fp>\n\u003Cp>  \u003Ccode>nuclear\u003C\u002Fcode>\u003Cbr \u002F>\n  \u003Ccode>all\u003C\u002Fcode> + \u003Ccode>unregister_block_type()\u003C\u002Fcode> for every core block\u003Cbr \u002F>\n  Page-builder sites – strips the editor inserter clean\u003C\u002Fp>\n\u003Cp>Default is \u003Ccode>all\u003C\u002Fcode>. Set the mode you want with any of these:\u003C\u002Fp>\n\u003Col>\n\u003Cli>The \u003Ccode>\u003Cdialog>\u003C\u002Fcode> settings – click the Settings link on the Plugins screen. Native HTML dialog, four radios, save. No menu items, nothing else added to your admin.\u003C\u002Fli>\n\u003Cli>A constant in \u003Ccode>wp-config.php\u003C\u002Fcode> – \u003Ccode>define( 'ZEROBLG_MODE', 'patterns' );\u003C\u002Fcode>. This wins over the dialog. Good devops escape hatch.\u003C\u002Fli>\n\u003Cli>A filter in a theme or mu-plugin – \u003Ccode>add_filter( 'zeroblg\u002Fmode', fn() => 'blocks' );\u003C\u002Fcode>. Used when neither the constant nor the dialog set a value.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Resolution order: constant, then settings, then filter, then \u003Ccode>all\u003C\u002Fcode>. An invalid value at any step just falls through to the next.\u003C\u002Fp>\n\u003Ch3>A few real cases\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Service-form site on WC. You sell consultations, not products – no cart, no checkout. \u003Ccode>mode=all\u003C\u002Fcode> strips every block stylesheet across the site.\u003C\u002Fli>\n\u003Cli>Classic-shortcode WC store. You use \u003Ccode>[woocommerce_cart]\u003C\u002Fcode> and \u003Ccode>[woocommerce_checkout]\u003C\u002Fcode>, no block UI. \u003Ccode>mode=blocks\u003C\u002Fcode> turns off the block frontend without touching your classic flow.\u003C\u002Fli>\n\u003Cli>Block-checkout store with bloated patterns. You run the new Cart\u002FCheckout blocks but never the WC pattern library. \u003Ccode>mode=patterns\u003C\u002Fcode> skips just the directory scanner – saves the disk hit, leaves your checkout alone.\u003C\u002Fli>\n\u003Cli>Themed store with a layered-nav filter, pixel-perfect requirement. Woodmart or similar, WC layered nav, no Product Filter block in any post. The \u003Ccode>ProductFilterAttribute\u003C\u002Fcode> pattern scan can cost ~100ms a request on its own. \u003Ccode>mode=keep-styles\u003C\u002Fcode> kills that scan and the rest of the block registration, but leaves every inline \u003Ccode>global-styles\u003C\u002Fcode> rule in place – so the shop renders pixel-for-pixel the same. \u003Ccode>all\u003C\u002Fcode> would shave the same milliseconds but strips \u003Ccode>theme.json\u003C\u002Fcode> styles too, which moves pixels.\u003C\u002Fli>\n\u003Cli>FrankenPHP \u002F worker mode. All hooks are idempotent, no \u003Ccode>$GLOBALS\u003C\u002Fcode> writes, \u003Ccode>\\Throwable\u003C\u002Fcode> catches around the DI lookups. Safe in a worker.\u003C\u002Fli>\n\u003Cli>Elementor \u002F Divi WC stores. The page builder renders its own checkout, so \u003Ccode>mode=all\u003C\u002Fcode> clears the WC and WP block CSS your theme never uses anyway.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Why I built it this way\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Activate it and it works – \u003Ccode>mode=all\u003C\u002Fcode> is the default, no setup needed.\u003C\u002Fli>\n\u003Cli>No settings page to learn. One constant or one filter is the whole API.\u003C\u002Fli>\n\u003Cli>Pure PHP. No database rows, no admin scripts, no frontend JS.\u003C\u002Fli>\n\u003Cli>No external requests, no tracking, nothing phoning home. GDPR is a non-issue.\u003C\u002Fli>\n\u003Cli>It uses the same \u003Ccode>Package::container()\u003C\u002Fcode> lookup as WC core, so it follows WC’s own object lifecycle instead of guessing.\u003C\u002Fli>\n\u003Cli>Worker-safe – FrankenPHP, Roadrunner, Swoole. No \u003Ccode>die\u003C\u002Fcode>, no \u003Ccode>exit\u003C\u002Fcode>, no session writes.\u003C\u002Fli>\n\u003Cli>mu-plugin friendly. Drop the folder into \u003Ccode>wp-content\u002Fmu-plugins\u002F\u003C\u002Fcode> and it loads itself.\u003C\u002Fli>\n\u003Cli>GPL, no upsells. No PRO tier, no Freemius, no admin notice nagging you for a review.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>From the maker of WP Multitool\u003C\u002Fh3>\n\u003Cp>This plugin handles the frontend block bloat. If you also want the backend cleaned up, that’s what \u003Ca href=\"https:\u002F\u002Fwpmultitool.com\u002F\" rel=\"nofollow ugc\">WP Multitool\u003C\u002Fa> does – slow queries, autoload bloat, the database bottlenecks that caching plugins just hide instead of fixing. Most optimization plugins guess at the problem. WP Multitool runs \u003Ccode>EXPLAIN\u003C\u002Fcode> and shows you. 14 tools in there – slow-query analyzer, autoload optimizer, index suggestions, fatal-error recovery – and a free site scanner if you want to see what’s slow before paying for anything. If Zero Blocks Given earned a spot in your stack, that one probably will too.\u003C\u002Fp>\n","Turn off WooCommerce \u002F WP block frontend output at the code level. Five tiers, optional one-click settings, no paywall.",313,"2026-07-21T22:37:00.000Z","6.0","8.0",[47,48,49,50,51],"disable-blocks","gutenberg","optimization","performance","woocommerce","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fzero-blocks-given.1.3.2.zip"]