WordPress plugin intelligence profile

Zero Blocks Given

Zero Blocks Given turns off WooCommerce / WP block frontend output at the code level. Five tiers, optional settings, no paywall.

WP PlugIndex snapshot

Current directory snapshot

Tested up to WordPress 7.1
Current version1.3.3
WordPress coverageTested up to WordPress 7.1
Minimum stackWP 6.0 · PHP 8.0
Directory statusactive
Last directory update20 Aug 20262mo ago
Active installations10Adoption metric — not a quality score
WordPress.org ratingNo WordPress.org ratings yet
Official packageDirect from WordPress.org

Repository metrics are context, not quality scores. Active installations measure adoption and can strongly reflect a plugin’s age and historical popularity. Ratings, recent updates and “Tested up to” metadata also do not guarantee modern code, error-free operation, security, feature completeness or suitability for a particular site. Why active installs don’t tell the whole story →

WP PlugIndex currently records Zero Blocks Given version 1.3.3 as active, updated 2mo ago and tested up to WordPress 7.1.

Overview

About this plugin

Most WooCommerce stores ship 80-150 KB of block CSS and JS that the store never actually renders. The WC BlockPatterns 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 global-styles, wp-block-library and font-faces on top, and you’re loading a Gutenberg frontend you probably switched off a long time ago.

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. php, pick a tier, done.

How it works

Here’s the thing – WC registers its block hooks as closures wrapping instance methods on container-managed objects. So you can’t remove_action() 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:

$bp = \Automattic\WooCommerce\Blocks\Package::container()->get( BlockPatterns::class ); remove_action( 'init', [ $bp, 'register_block_patterns' ] );

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.

Five modes. Three ways to set them.

Mode

What it turns off

When to use it

patterns

WC BlockPatterns directory scanner only

Block-based Cart/Checkout – keeps all blocks rendering, just skips the file-I/O scan

blocks

patterns + BlockTypesController + Notices styles + wc-blocks-style handle

Classic-shortcode WC stores

keep-styles

blocks + WC Product Filter pattern scan ( ProductFilterAttribute )

Stores that don’t use WC blocks but keep Gutenberg styling – kills the expensive scans, leaves global-styles and core block rendering alone. Pixel-perfect.

all

json + font-faces + head <style> strip

Sites with no Gutenberg frontend at all

nuclear

all + unregister_block_type() for every core block

Page-builder sites – strips the editor inserter clean

Default is all. Set the mode you want with any of these:

  • The <dialog> settings – click the Settings link on the Plugins screen. Native HTML dialog, four radios, save. No menu items, nothing else added to your admin.
  • A constant in wp-config.php – define( 'ZEROBLG_MODE', 'patterns' );. This wins over the dialog. Good devops escape hatch.
  • A filter in a theme or mu-plugin – add_filter( 'zeroblg/mode', fn() => 'blocks' );. Used when neither the constant nor the dialog set a value.

Resolution order: constant, then settings, then filter, then all. An invalid value at any step just falls through to the next.

A few real cases

  • Service-form site on WC. You sell consultations, not products – no cart, no checkout. mode=all strips every block stylesheet across the site.
  • Classic-shortcode WC store. You use [woocommerce_cart] and [woocommerce_checkout], no block UI. mode=blocks turns off the block frontend without touching your classic flow.
  • Block-checkout store with bloated patterns. You run the new Cart/Checkout blocks but never the WC pattern library. mode=patterns skips just the directory scanner – saves the disk hit, leaves your checkout alone.
  • Themed store with a layered-nav filter, pixel-perfect requirement. Woodmart or similar, WC layered nav, no Product Filter block in any post. The ProductFilterAttribute pattern scan can cost ~100ms a request on its own. mode=keep-styles kills that scan and the rest of the block registration, but leaves every inline global-styles rule in place – so the shop renders pixel-for-pixel the same. all would shave the same milliseconds but strips theme.json styles too, which moves pixels.
  • FrankenPHP / worker mode. All hooks are idempotent, no $GLOBALS writes, \Throwable catches around the DI lookups. Safe in a worker.
  • Elementor / Divi WC stores. The page builder renders its own checkout, so mode=all clears the WC and WP block CSS your theme never uses anyway.

Why I built it this way

  • Activate it and it works – mode=all is the default, no setup needed.
  • No settings page to learn. One constant or one filter is the whole API.
  • Pure PHP. No database rows, no admin scripts, no frontend JS.
  • No external requests, no tracking, nothing phoning home. GDPR is a non-issue.
  • It uses the same Package::container() lookup as WC core, so it follows WC’s own object lifecycle instead of guessing.
  • Worker-safe – FrankenPHP, Roadrunner, Swoole. No die, no exit, no session writes.
  • mu-plugin friendly. Drop the folder into wp-content/mu-plugins/ and it loads itself.
  • GPL, no upsells. No PRO tier, no Freemius, no admin notice nagging you for a review.

From the maker of WP Multitool

This plugin handles the frontend block bloat. If you also want the backend cleaned up, that’s what WP Multitool 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 EXPLAIN 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.

WordPress.org metadata

Plugin tags

Topics listed for this plugin in the WordPress.org directory.

  • disable blocks
  • zero blocks given
  • gutenberg
  • performance
  • woocommerce
Compatibility & maintenance

Compatibility & maintenance

Tested with WP 7.1

Marked as tested with the current WordPress 7.1 release.

Current WordPress releaseWordPress 7.1
WordPress.org Tested up to7.1
Minimum requirementsWordPress 6.0 · PHP 8.0
Update activity20 Aug 20262mo ago

“Tested up to” is directory metadata supplied by the plugin author. WP PlugIndex does not turn an older declaration into a claim that the plugin is incompatible.

Changes recorded by WP PlugIndex

Recent tracked changes

No tracked version or compatibility changes have been recorded by WP PlugIndex yet.

Tracking & source

WP PlugIndex tracks public WordPress.org directory metadata and records selected version, compatibility and availability changes as they are detected.

Plugin watchlist

Watch this plugin

Sign in to your WP PlugIndex account or create a free account. Free accounts can watch up to 5 plugins and see what changed.

Watch limit

Watchlist limit reached

You have reached your current active watch limit.