{"id":376687,"date":"2026-09-30T13:31:17","date_gmt":"2026-09-30T13:31:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ccms-store-customizer-for-woocommerce\/"},"modified":"2026-09-30T13:30:44","modified_gmt":"2026-09-30T13:30:44","slug":"ccms-commerce-controls-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/szl.wordpress.org\/plugins\/ccms-commerce-controls-for-woocommerce\/","author":17117220,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.1.0","stable_tag":"2.1.0","tested":"7.1.2","requires":"5.6","requires_php":"7.2","requires_plugins":null,"header_name":"CCMS Commerce Controls for WooCommerce","header_author":"Complete Content Management Services","header_description":"Decimal quantities, quantity rules, checkout field editor, guest registration, login controls, hidden guest prices, thank-you redirect, My Account menu editor, and performance cleanup \u2014 all in one lightweight settings panel.","assets_banners_color":"173b6f","last_updated":"2026-09-30 13:30:44","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.ccmssolutions.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":47,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.1.0":{"tag":"2.1.0","author":"ccmshightech","date":"2026-09-30 13:30:44","revision":3721340}},"upgrade_notice":{"2.1.0":"<p>Adds quantity rules, a checkout field editor, guest price hiding, a thank-you redirect and performance options. All new features are off by default and existing settings are preserved.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3721339,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3721339,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3721339,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3721339,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3721339,"resolution":"1","location":"assets","locale":"","width":1333,"height":1223},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3721339,"resolution":"2","location":"assets","locale":"","width":1333,"height":1223},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3721339,"resolution":"3","location":"assets","locale":"","width":1083,"height":2000},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3721339,"resolution":"4","location":"assets","locale":"","width":1333,"height":1323},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3721339,"resolution":"5","location":"assets","locale":"","width":1333,"height":1324},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3721339,"resolution":"6","location":"assets","locale":"","width":1333,"height":1223}},"screenshots":{"1":"Settings screen \u2014 branded header with a live status badge, and a tab per feature (Decimal Quantities, Guest Registration, Login Settings, My Account Tabs, Quantity Rules, Checkout Fields, Prices &amp; Redirects, Performance).","2":"Quantity Rules \u2014 set a store-wide minimum, maximum and step, enforced on product pages, the cart and checkout, including the Cart and Checkout blocks.","3":"Checkout Field Editor \u2014 hide, require, relabel and reorder fields on the classic checkout, with a notice when the store is using the Checkout block instead.","4":"My Account Menu Editor \u2014 drag and drop to reorder, rename, hide, or add custom links to the My Account sidebar.","5":"FAQ tab \u2014 common questions answered in an accordion layout right inside the plugin.","6":"About CCMS tab \u2014 company information and an optional, consent-based newsletter sign-up."}},"plugin_section":[],"plugin_tags":[61045,21918,247,3070,286],"plugin_category":[45,54],"plugin_contributors":[282389],"plugin_business_model":[],"class_list":["post-376687","plugin","type-plugin","status-publish","hentry","plugin_tags-checkout-fields","plugin_tags-my-account","plugin_tags-performance","plugin_tags-quantity","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-security-and-spam-protection","plugin_contributors-ccmshightech","plugin_committers-ccmshightech"],"banners":{"banner":"https:\/\/ps.w.org\/ccms-commerce-controls-for-woocommerce\/assets\/banner-772x250.png?rev=3721339","banner_2x":"https:\/\/ps.w.org\/ccms-commerce-controls-for-woocommerce\/assets\/banner-1544x500.png?rev=3721339","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ccms-commerce-controls-for-woocommerce\/assets\/icon-128x128.png?rev=3721339","icon_2x":"https:\/\/ps.w.org\/ccms-commerce-controls-for-woocommerce\/assets\/icon-256x256.png?rev=3721339","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ccms-commerce-controls-for-woocommerce\/assets\/screenshot-1.png?rev=3721339","caption":"Settings screen \u2014 branded header with a live status badge, and a tab per feature (Decimal Quantities, Guest Registration, Login Settings, My Account Tabs, Quantity Rules, Checkout Fields, Prices &amp; Redirects, Performance)."},{"src":"https:\/\/ps.w.org\/ccms-commerce-controls-for-woocommerce\/assets\/screenshot-2.png?rev=3721339","caption":"Quantity Rules \u2014 set a store-wide minimum, maximum and step, enforced on product pages, the cart and checkout, including the Cart and Checkout blocks."},{"src":"https:\/\/ps.w.org\/ccms-commerce-controls-for-woocommerce\/assets\/screenshot-3.png?rev=3721339","caption":"Checkout Field Editor \u2014 hide, require, relabel and reorder fields on the classic checkout, with a notice when the store is using the Checkout block instead."},{"src":"https:\/\/ps.w.org\/ccms-commerce-controls-for-woocommerce\/assets\/screenshot-4.png?rev=3721339","caption":"My Account Menu Editor \u2014 drag and drop to reorder, rename, hide, or add custom links to the My Account sidebar."},{"src":"https:\/\/ps.w.org\/ccms-commerce-controls-for-woocommerce\/assets\/screenshot-5.png?rev=3721339","caption":"FAQ tab \u2014 common questions answered in an accordion layout right inside the plugin."},{"src":"https:\/\/ps.w.org\/ccms-commerce-controls-for-woocommerce\/assets\/screenshot-6.png?rev=3721339","caption":"About CCMS tab \u2014 company information and an optional, consent-based newsletter sign-up."}],"raw_content":"<!--section=description-->\n<p>CCMS Commerce Controls replaces a handful of small single-purpose WooCommerce plugins with one lightweight settings panel. Every feature is independent and switched off until you turn it on, so you only load what you use.<\/p>\n\n<p><strong>Decimal Quantities<\/strong> \u2014 Let customers order fractional quantities (0.5 kg, 1.25 m, etc.). Set the precision from 0 to 6 decimal places.<\/p>\n\n<p><strong>Quantity Rules<\/strong> \u2014 Set a minimum, maximum and step (sold in multiples of) for how much of a product can be bought. Set store-wide defaults and override them per product under Product data \u2192 Inventory. Enforced on product pages, the cart and checkout, including the Cart and Checkout blocks.<\/p>\n\n<p><strong>Checkout Field Editor<\/strong> \u2014 On the classic checkout, hide fields, make them required or optional, change labels and placeholders, and set the display order. Email and country are protected so checkout keeps working.<\/p>\n\n<p><strong>Guest Auto-Registration<\/strong> \u2014 Automatically create a customer account when a guest places an order. The new account is linked to the order so the customer can log in and view their order history.<\/p>\n\n<p><strong>Force Login<\/strong> \u2014 Require visitors to log in before browsing the store. Password-reset and login pages remain accessible.<\/p>\n\n<p><strong>Login Redirect<\/strong> \u2014 Redirect customers to the My Account page after login instead of the default WooCommerce destination.<\/p>\n\n<p><strong>Hide Prices from Guests<\/strong> \u2014 Show a login prompt instead of prices to visitors who are not logged in, and stop them adding products to the cart.<\/p>\n\n<p><strong>Thank-You Page Redirect<\/strong> \u2014 Send customers to your own page after a successful order, optionally passing the order ID and key so your page can show order details.<\/p>\n\n<p><strong>My Account Menu Editor<\/strong> \u2014 Drag and drop to reorder the My Account sidebar tabs, rename them, toggle their visibility, or add custom links that point anywhere.<\/p>\n\n<p><strong>Performance Cleanup<\/strong> \u2014 Optional switches to load WooCommerce CSS and JS only on store pages, disable cart fragments outside cart and checkout, remove WooCommerce dashboard widgets, and hide marketplace suggestions and the Marketing menu.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WooCommerce 5.0 or later<\/li>\n<li>WordPress 5.6 or later<\/li>\n<li>PHP 7.2 or later<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin is fully functional without contacting any external service. It connects to one external service, and only when you explicitly choose to use it:<\/p>\n\n<p><strong>CCMS newsletter opt-in (optional).<\/strong> The plugin includes an optional newsletter sign-up on the <strong>WooCommerce \u2192 CCMS Commerce Controls \u2192 About CCMS<\/strong> tab. Nothing is sent unless a logged-in administrator types an email address, ticks the consent checkbox, and clicks <strong>Subscribe<\/strong>. When (and only when) that happens, the plugin sends the following to CCMS to record the subscription:<\/p>\n\n<ul>\n<li>the email address you entered;<\/li>\n<li>a consent flag indicating you agreed to receive email;<\/li>\n<li>a fixed source label (<code>ccms-commerce-controls-for-woocommerce<\/code>); and<\/li>\n<li>your site's address (the result of <code>home_url()<\/code>), so CCMS can associate the request with your site.<\/li>\n<\/ul>\n\n<p>The data is sent to Complete Content Management Services (CCMS) at <code>https:\/\/www.ccmssolutions.com\/api\/newsletter-subscribe.php<\/code>. No data is sent at any other time, and no order, customer, visitor, or store data is ever transmitted.<\/p>\n\n<p>Service provider: Complete Content Management Services \u2014 https:\/\/www.ccmssolutions.com\/\nTerms of service: https:\/\/www.ccmssolutions.com\/terms\/\nPrivacy policy: https:\/\/www.ccmssolutions.com\/privacy-policy\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>ccms-commerce-controls-for-woocommerce<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu.<\/li>\n<li>Go to <strong>WooCommerce \u2192 CCMS Commerce Controls<\/strong> to configure settings.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20work%20without%20woocommerce%3F\"><h3>Does this plugin work without WooCommerce?<\/h3><\/dt>\n<dd><p>No. WooCommerce must be installed and active. An admin notice will appear if it is missing.<\/p><\/dd>\n<dt id=\"will%20enabling%20decimal%20quantities%20break%20my%20existing%20products%3F\"><h3>Will enabling decimal quantities break my existing products?<\/h3><\/dt>\n<dd><p>No. Existing whole-number quantities continue to work. The setting only changes the minimum step and stock precision so fractional values are accepted.<\/p><\/dd>\n<dt id=\"does%20guest%20auto-registration%20attach%20an%20order%20to%20an%20existing%20account%3F\"><h3>Does guest auto-registration attach an order to an existing account?<\/h3><\/dt>\n<dd><p>No. If the billing email already belongs to an account, no new account is created and the order stays a guest order. Orders placed by logged-in customers are never moved.<\/p><\/dd>\n<dt id=\"does%20force%20login%20protect%20the%20rest%20api%3F\"><h3>Does Force Login protect the REST API?<\/h3><\/dt>\n<dd><p>No. Force Login redirects page and feed requests to the login screen. It does not block the WordPress or WooCommerce REST API, so it is not a way to hide store data from the public.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20the%20guest%20account%20password%3F\"><h3>What happens to the guest account password?<\/h3><\/dt>\n<dd><p>A random password is generated. The customer can use the \"Lost your password?\" link on the My Account page to set their own password.<\/p><\/dd>\n<dt id=\"can%20i%20revert%20my%20account%20tab%20changes%3F\"><h3>Can I revert My Account tab changes?<\/h3><\/dt>\n<dd><p>Yes. Deactivating the plugin restores the default WooCommerce My Account menu. You can also delete the plugin to remove all saved settings.<\/p><\/dd>\n<dt id=\"does%20the%20checkout%20field%20editor%20work%20with%20the%20checkout%20block%3F\"><h3>Does the checkout field editor work with the Checkout block?<\/h3><\/dt>\n<dd><p>No. It applies to the classic (shortcode) checkout. If your checkout page uses the WooCommerce Checkout block, the settings page shows a notice. Quantity rules do work with the Cart and Checkout blocks.<\/p><\/dd>\n<dt id=\"how%20do%20quantity%20rules%20work%20with%20a%20step%3F\"><h3>How do quantity rules work with a step?<\/h3><\/dt>\n<dd><p>A quantity is valid when it is at least the minimum, at most the maximum, and a multiple of the step. With a step of 6, customers can buy 6, 12, 18 and so on. The minimum and maximum are rounded to a multiple of the step.<\/p><\/dd>\n<dt id=\"does%20hiding%20prices%20protect%20them%3F\"><h3>Does hiding prices protect them?<\/h3><\/dt>\n<dd><p>It hides prices on the page and blocks purchasing for logged-out visitors. It is not a security control: prices remain available to code that reads WooCommerce data directly, such as the REST API.<\/p><\/dd>\n<dt id=\"why%20does%20the%20thank-you%20redirect%20skip%20some%20orders%3F\"><h3>Why does the thank-you redirect skip some orders?<\/h3><\/dt>\n<dd><p>Failed orders are never redirected, and the order key in the URL must match the order. Scripts that run on the default order-received page, such as conversion tracking, will not run on the redirect target unless you add them there.<\/p><\/dd>\n<dt id=\"is%20the%20performance%20cleanup%20safe%3F\"><h3>Is the performance cleanup safe?<\/h3><\/dt>\n<dd><p>Every option is off by default and none change orders, prices or stock. If your header shows a live mini cart, leave \"Disable cart fragments\" off. Enable options one at a time and check your storefront.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>New: Quantity Rules \u2014 minimum, maximum and step per product with store-wide defaults, enforced on product pages, cart, checkout and the Cart\/Checkout blocks.<\/li>\n<li>New: Checkout Field Editor \u2014 hide, require, relabel and reorder classic checkout fields.<\/li>\n<li>New: Hide prices and purchasing from logged-out visitors.<\/li>\n<li>New: Thank-you page redirect with optional order details.<\/li>\n<li>New: Performance Cleanup options.<\/li>\n<li>New: FAQ, Help &amp; Support and About CCMS tabs, with an optional, consent-based newsletter sign-up.<\/li>\n<li>Refreshed settings screen with a banner header and a single tab bar.<\/li>\n<li>Store listing images moved out of the plugin package to reduce download size.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Complete rewrite for WordPress.org submission.<\/li>\n<li>Added HPOS compatibility declaration.<\/li>\n<li>Added full internationalization (i18n) support.<\/li>\n<li>Replaced external CDN dependencies with WordPress core UI.<\/li>\n<li>Added uninstall.php for clean removal.<\/li>\n<li>Security hardening: nonce checks, capability checks, output escaping.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<\/ul>","raw_excerpt":"Decimal and min\/max quantities, checkout field editor, guest registration, login controls, My Account editor and performance cleanup in one plugin.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/376687","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=376687"}],"author":[{"embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ccmshightech"}],"wp:attachment":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=376687"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=376687"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=376687"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=376687"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=376687"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=376687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}