I keep ending up in the same WooCommerce store, over and over: decimal quantities from one plugin, a checkout field tweak from another, guest account creation from a third, a reordered My Account menu from a fourth. Each one is a single settings screen bolted onto a full plugin, with its own update cycle and its own chance of breaking on the next WooCommerce release. Under CCMS, I built the plugin I kept wishing existed — CCMS Store Customizer — and it's free.

The plugin-pile problem

None of these features is hard to build on its own. A decimal-quantity filter is maybe 30 lines. A guest-registration hook is another 40. The problem is never the code — it's that each one usually ships as its own plugin, and a store that wants six of these small conveniences ends up running six plugins. Six sets of assets loading on every page, six things to check after a WordPress core update, six author changelogs to read before you trust an auto-update.

I've watched this pattern slow down more client stores than any single bad plugin ever has. It's not that any one of them is poorly written; it's that WooCommerce performance is a tax paid per active plugin, and nobody adds up the bill until the storefront feels sluggish.

What's actually in it

CCMS Store Customizer is one settings screen under WooCommerce → CCMS Store Customizer, with a tab per feature. Every feature is off until you turn it on — a store that only wants decimal quantities loads only decimal quantities:

  • Decimal Quantities — sell by the half kilo or the quarter metre, 0 to 6 decimal places.
  • Quantity Rules — a min, max and step per product, with store-wide defaults, enforced on product pages, cart and checkout, including the Cart and Checkout blocks.
  • Checkout Field Editor — hide, require, relabel and reorder fields on the classic checkout.
  • Guest Auto-Registration — create a customer account on a guest order and link the order to it, without touching orders placed by logged-in customers.
  • Force Login / Login Redirect — require login to browse, and land customers on My Account after sign-in.
  • Hide Prices from Guests — a login prompt instead of prices for logged-out visitors.
  • Thank-You Page Redirect — send customers somewhere of your own after checkout, with the order ID and key if you want to build a custom confirmation page.
  • My Account Menu Editor — drag-and-drop reorder, rename, hide, or add custom links to the My Account sidebar.
  • Performance Cleanup — scope WooCommerce CSS/JS to store pages, kill cart fragments elsewhere, and strip dashboard widgets and marketing nags.

That last one is the plugin quietly undoing some of the damage the plugin pile it's replacing would otherwise cause.

A couple of details worth knowing before you install it

Quantity rules validate on the product page, the cart, and checkout — including the block-based Cart and Checkout, not just the classic shortcode versions. WooCommerce ships two parallel checkout implementations right now, and a lot of small plugins only handle one of them. If your store is on the Checkout block and a "quantity rules" plugin only hooks the classic woocommerce_add_to_cart_validation filter, customers can quietly bypass the limit through the block checkout. This one hooks the Store API filters too.

The checkout field editor is classic-checkout only, and it tells you so on the settings screen if it detects your checkout page is using the block. I'd rather the plugin admit a limitation than silently do nothing.

Guest registration only creates an account when the billing email doesn't already belong to one, and it never touches an order placed by someone already logged in. That distinction matters more than it sounds — I've seen a poorly-written version of this feature accidentally reassign a logged-in customer's order to a new duplicate account because it matched on email instead of checking get_customer_id() first.

HPOS and the Checkout block

It declares compatibility with High-Performance Order Storage and with the Cart/Checkout blocks in before_woocommerce_init, so you won't get the "this plugin may not be compatible" warning that shows up for plugins that haven't been touched since WooCommerce introduced HPOS. If you're evaluating any WooCommerce plugin in 2026, that declaration — or the lack of it — is worth checking before you install.


add_action( 'before_woocommerce_init', function () {
    if ( class_exists( '\Automattic\WooCommerce\Utilities\FeaturesUtil' ) ) {
        \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true );
        \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'cart_checkout_blocks', __FILE__, true );
    }
} );

Where to get it

It's free, GPL-licensed, and I've submitted it to the WordPress.org plugin directory — it's in the review queue as I write this. Until it clears review, the plugin page has a direct download, and the documentation walks through every tab.

FAQs

Do I need to enable everything?
No. Every feature is independent. Turn on the ones you need and leave the rest off — a disabled feature adds nothing to page load.

Will this conflict with the small plugins it replaces?
It shouldn't break anything if you leave the old ones active, but there's no reason to run both. Test one feature at a time, confirm it behaves the way the old plugin did, then deactivate the old plugin.

Does the performance cleanup change anything visible to customers?
Only if you enable "Disable cart fragments" and your theme depends on the live mini-cart AJAX update — leave that one off if you're not sure. Everything else is invisible to shoppers.

Get in touch if you run into something the plugin should handle and doesn't.