{"id":355669,"date":"2026-08-28T08:33:12","date_gmt":"2026-08-28T08:33:12","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/gsoft-labs-blocks-compatibility-scanner-for-woocommerce\/"},"modified":"2026-08-28T11:02:02","modified_gmt":"2026-08-28T11:02:02","slug":"gsoft-labs-blocks-compatibility-scanner-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/gsoft-labs-blocks-compatibility-scanner-for-woocommerce\/","author":23540904,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.6","stable_tag":"1.1.6","tested":"7.1.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Gsoft Labs Blocks Compatibility Scanner for WooCommerce","header_author":"Gsoft Labs","header_description":"Scan WooCommerce Cart and Checkout Blocks compatibility, identify risks, migrate supported fields, and create safe test pages.","assets_banners_color":"251ba9","last_updated":"2026-08-28 11:02:02","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/gsoftlabs.com\/woocommerceblockscanner\/","header_author_uri":"https:\/\/gsoftlabs.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":183,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.6":{"tag":"1.1.6","author":"gsoftlabs","date":"2026-08-28 11:02:02","revision":3670198}},"upgrade_notice":{"1.1.6":"<p>Requires WooCommerce (declared in the plugin header). Translation text domain updated to match the WordPress.org slug. No action needed for existing scans or settings.<\/p>","1.1.5":"<p>Packaging fix: composer.json\/composer.lock now ship with the plugin. No functional changes; no action needed.<\/p>","1.1.4":"<p>Declares compatibility with WooCommerce High-Performance Order Storage. No action needed.<\/p>","1.1.3":"<p>Minor input-handling hardening in the Developer Logs export. No action needed.<\/p>","1.1.2":"<p>Removed the last remaining inline styles and hardened a few input-handling and path-display edge cases. No action needed.<\/p>","1.1.1":"<p>Security and code-quality hardening: safer file reads, stricter REST validation, a fixed uninstall bug, and CSV formula-injection protection. No action needed.<\/p>","1.1.0":"<p>Plugin renamed to Gsoft Labs Blocks Compatibility Scanner for WooCommerce. No action needed; your scan history, settings, and migrated fields are unaffected.<\/p>","1.0.8":"<p>Adds a Help &amp; Support page with step-by-step guidance for every screen.<\/p>","1.0.7":"<p>Fixes missing styles\/scripts on most pages and adds a redesigned, more beginner-friendly interface with charts.<\/p>","1.0.6":"<p>Fixes field migration registration, developer log downloads, and the onboarding scan redirect.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3670211,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3670211,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3670211,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3670211,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3670211,"resolution":"1","location":"assets","locale":"","width":1920,"height":1080},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3670211,"resolution":"2","location":"assets","locale":"","width":1920,"height":1080},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3670211,"resolution":"3","location":"assets","locale":"","width":1920,"height":1080},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3670211,"resolution":"4","location":"assets","locale":"","width":1920,"height":1080},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3670211,"resolution":"5","location":"assets","locale":"","width":1920,"height":1080},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3670211,"resolution":"6","location":"assets","locale":"","width":1920,"height":1080},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3670211,"resolution":"7","location":"assets","locale":"","width":1920,"height":1080}},"screenshots":{"1":"Dashboard \u2014 readiness score and area summary cards.","2":"Scan Results \u2014 full risk list and Classic hook detection.","3":"Custom Fields \u2014 migrate supported fields with one click.","4":"Test Checkout \u2014 create a private test page and complete the testing checklist.","5":"Migration Guidance \u2014 step-by-step instructions for manual migration items.","6":"Developer Logs \u2014 export scan data in JSON, TXT, or CSV.","7":"Settings \u2014 configure scan history, re-scan triggers, and privacy preferences."}},"plugin_section":[],"plugin_tags":[4121,3148,3005,4155,286],"plugin_category":[45,59],"plugin_contributors":[275983],"plugin_business_model":[],"class_list":["post-355669","plugin","type-plugin","status-publish","hentry","plugin_tags-blocks","plugin_tags-checkout","plugin_tags-compatibility","plugin_tags-migration","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-utilities-and-tools","plugin_contributors-gsoftlabs","plugin_committers-gsoftlabs"],"banners":{"banner":"https:\/\/ps.w.org\/gsoft-labs-blocks-compatibility-scanner-for-woocommerce\/assets\/banner-772x250.png?rev=3670211","banner_2x":"https:\/\/ps.w.org\/gsoft-labs-blocks-compatibility-scanner-for-woocommerce\/assets\/banner-1544x500.png?rev=3670211","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/gsoft-labs-blocks-compatibility-scanner-for-woocommerce\/assets\/icon-128x128.png?rev=3670211","icon_2x":"https:\/\/ps.w.org\/gsoft-labs-blocks-compatibility-scanner-for-woocommerce\/assets\/icon-256x256.png?rev=3670211","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/gsoft-labs-blocks-compatibility-scanner-for-woocommerce\/assets\/screenshot-1.png?rev=3670211","caption":"Dashboard \u2014 readiness score and area summary cards."},{"src":"https:\/\/ps.w.org\/gsoft-labs-blocks-compatibility-scanner-for-woocommerce\/assets\/screenshot-2.png?rev=3670211","caption":"Scan Results \u2014 full risk list and Classic hook detection."},{"src":"https:\/\/ps.w.org\/gsoft-labs-blocks-compatibility-scanner-for-woocommerce\/assets\/screenshot-3.png?rev=3670211","caption":"Custom Fields \u2014 migrate supported fields with one click."},{"src":"https:\/\/ps.w.org\/gsoft-labs-blocks-compatibility-scanner-for-woocommerce\/assets\/screenshot-4.png?rev=3670211","caption":"Test Checkout \u2014 create a private test page and complete the testing checklist."},{"src":"https:\/\/ps.w.org\/gsoft-labs-blocks-compatibility-scanner-for-woocommerce\/assets\/screenshot-5.png?rev=3670211","caption":"Migration Guidance \u2014 step-by-step instructions for manual migration items."},{"src":"https:\/\/ps.w.org\/gsoft-labs-blocks-compatibility-scanner-for-woocommerce\/assets\/screenshot-6.png?rev=3670211","caption":"Developer Logs \u2014 export scan data in JSON, TXT, or CSV."},{"src":"https:\/\/ps.w.org\/gsoft-labs-blocks-compatibility-scanner-for-woocommerce\/assets\/screenshot-7.png?rev=3670211","caption":"Settings \u2014 configure scan history, re-scan triggers, and privacy preferences."}],"raw_content":"<!--section=description-->\n<p><strong>Gsoft Labs Blocks Compatibility Scanner for WooCommerce<\/strong> helps WooCommerce store owners assess their readiness to switch from Classic Cart and Checkout to the new WooCommerce Cart and Checkout Blocks. It scans your active plugins, theme, payment gateways, shipping methods, and custom checkout fields, gives you a readiness score, and helps you migrate supported fields using the official Additional Checkout Fields API.<\/p>\n\n<p>Learn more and get support at the plugin homepage: <a href=\"https:\/\/gsoftlabs.com\/woocommerceblockscanner\/\">https:\/\/gsoftlabs.com\/woocommerceblockscanner\/<\/a><\/p>\n\n<p>This plugin is developed by Gsoft Labs and is not affiliated with or endorsed by Automattic or the WooCommerce project. \"WooCommerce\" is a trademark of Automattic Inc., referenced here only to describe compatibility.<\/p>\n\n<h4>What the plugin does<\/h4>\n\n<ul>\n<li>Scans 7 areas: store configuration, plugins, Classic hooks, theme, payment gateways, shipping methods, and custom fields.<\/li>\n<li>Calculates a weighted readiness score (0\u2013100%) with a clear message.<\/li>\n<li>Lists every Classic Checkout hook detected in your plugins and theme, with the inferred purpose and the recommended Blocks alternative.<\/li>\n<li>Assesses every enabled payment gateway and shipping method for Blocks compatibility.<\/li>\n<li>Detects custom checkout fields and migrates supported types (text, checkbox, select, radio, number, textarea) using <code>woocommerce_register_additional_checkout_field()<\/code>.<\/li>\n<li>Creates a private draft test Checkout Blocks page so you can test without touching your live checkout.<\/li>\n<li>Provides a full testing checklist to complete before switching.<\/li>\n<li>Generates developer logs (JSON, TXT, CSV) for debugging \u2014 no passwords, API keys, or customer PII included.<\/li>\n<li>Provides manual guidance for features that cannot be automatically migrated (fees, conditionals, date pickers, file uploads, unknown gateways).<\/li>\n<\/ul>\n\n<h4>Safety rules<\/h4>\n\n<ul>\n<li>The plugin never changes your live checkout page without an explicit, confirmed admin action.<\/li>\n<li>Test pages are draft\/private, no-indexed, and never assigned as WooCommerce cart or checkout pages.<\/li>\n<li>Scanning never processes real payments.<\/li>\n<li>The readiness score is an assessment, not a guarantee.<\/li>\n<li>This plugin never sends any data to Gsoft Labs or any third party. All scanning and reporting happens locally on your site.<\/li>\n<\/ul>\n\n<h4>Field migration<\/h4>\n\n<p>The free core plugin can migrate these field types via the Additional Checkout Fields API:<\/p>\n\n<ul>\n<li>Text, email, tel, URL, hidden, password \u2192 registered as text<\/li>\n<li>Checkbox \u2192 registered as checkbox<\/li>\n<li>Select \/ dropdown \u2192 registered as select<\/li>\n<li>Radio buttons \u2192 registered as select (with a warning)<\/li>\n<li>Number \u2192 registered as text with numeric pattern (with a warning)<\/li>\n<li>Textarea \u2192 registered as text (with a warning)<\/li>\n<\/ul>\n\n<p>Fields requiring manual setup (date pickers, file uploads, complex conditionals) are identified with guidance cards.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.0 or later<\/li>\n<li>WooCommerce 8.9 or later (Additional Checkout Fields API)<\/li>\n<li>PHP 7.4 or later<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/gsoft-labs-blocks-compatibility-scanner-for-woocommerce\/<\/code>.<\/li>\n<li>Activate the plugin in the WordPress admin.<\/li>\n<li>Go to <strong>WB Compat<\/strong> in the admin menu to run your first scan.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20this%20plugin%20change%20my%20live%20checkout%3F\"><h3>Will this plugin change my live checkout?<\/h3><\/dt>\n<dd><p>No. The scanner never changes your live cart or checkout page without an explicit, confirmed admin action. Creating the test page only creates a private draft page that is never assigned as your WooCommerce checkout.<\/p><\/dd>\n<dt id=\"is%20the%20readiness%20score%20a%20guarantee%3F\"><h3>Is the readiness score a guarantee?<\/h3><\/dt>\n<dd><p>No. The score is an assessment based on detected compatibility signals. Manual testing is always required before switching your live checkout. The plugin's guidance page includes a full pre-switch checklist.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20custom%20checkout%20fields%20after%20migration%3F\"><h3>What happens to my custom checkout fields after migration?<\/h3><\/dt>\n<dd><p>Migrated fields are registered using <code>woocommerce_register_additional_checkout_field()<\/code> and appear on the Checkout Blocks form. They are saved to the order and can be displayed in the admin and customer emails.<\/p><\/dd>\n<dt id=\"what%20field%20types%20cannot%20be%20migrated%20automatically%3F\"><h3>What field types cannot be migrated automatically?<\/h3><\/dt>\n<dd><p>Date pickers, file upload fields, and fields with complex conditional logic cannot be migrated by the free core plugin. Guidance cards explain what to do for each unsupported type.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20multisite%3F\"><h3>Does the plugin support multisite?<\/h3><\/dt>\n<dd><p>The plugin has not been tested on WordPress Multisite. Use on single-site installations only.<\/p><\/dd>\n<dt id=\"is%20any%20data%20sent%20to%20a%20third%20party%3F\"><h3>Is any data sent to a third party?<\/h3><\/dt>\n<dd><p>No. This plugin does not connect to any external service, API, or analytics platform. All scanning, scoring, and field migration happens entirely on your own site.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.6<\/h4>\n\n<ul>\n<li>Declared WooCommerce as a required plugin (<code>Requires Plugins: woocommerce<\/code>).<\/li>\n<li>Aligned the translation text domain with the WordPress.org plugin slug.<\/li>\n<li>Hardened shipping-method plugin path detection so it works with both Linux and Windows path separators.<\/li>\n<li>Translated the test-checkout checklist labels as literal strings so they can be extracted for translation.<\/li>\n<li>Set the plugin homepage to https:\/\/gsoftlabs.com\/woocommerceblockscanner\/.<\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Included <code>composer.json<\/code> and <code>composer.lock<\/code> in the distribution package for transparency (the plugin uses Composer's PSR-4 autoloading; the generated autoloader in <code>vendor\/<\/code> is now produced by a genuine <code>composer install<\/code> rather than a hand-written substitute).<\/li>\n<li>Kept Composer metadata in the package and excluded the Composer executable (<code>composer.phar<\/code>) from the distribution.<\/li>\n<li>Clarified the WordPress.org short description so the plugin homepage link lives only in the full Description.<\/li>\n<\/ul>\n\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>Declared compatibility with WooCommerce High-Performance Order Storage (<code>custom_order_tables<\/code>). This plugin never reads or writes order data (it only manages its own settings, scan results, and disposable test pages), so it is safe to declare.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>The Developer Logs export handler now sanitizes <code>wcbcs_export<\/code> with <code>sanitize_key()<\/code> at the very first point it is read from <code>$_GET<\/code>, instead of only checking <code>empty()<\/code> on the raw superglobal first.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Removed the remaining inline <code>style<\/code> attributes (<code>Charts.php<\/code>, <code>CustomFields.php<\/code>, <code>Onboarding.php<\/code>, <code>Dashboard.php<\/code>, <code>SettingsPage.php<\/code>). The per-area readiness bar chart now renders as a native <code>&lt;progress&gt;<\/code> element instead of a dynamically generated inline width.<\/li>\n<li>The welcome-notice dismiss link and the Developer Logs export handler now explicitly sanitize their <code>$_GET<\/code> values before use, in addition to the existing nonce\/capability checks.<\/li>\n<li>Removed a leftover no-op <code>array_walk_recursive()<\/code> call in the log exporter.<\/li>\n<li>Hardened path handling in the theme scanner so overridden\/outdated template paths are always relative (never leak the server's absolute filesystem layout), with a safe fallback if a path cannot be confidently relativized.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Shortened the plugin description (header and readme).<\/li>\n<li>Removed all inline CSS from admin notices; moved to a small dedicated stylesheet.<\/li>\n<li>Fixed a bug where the uninstaller deleted its own options before reading the test-page IDs it needed to clean up, so test pages were left behind after uninstall.<\/li>\n<li>Hardened the field-migration REST endpoint: option key\/value pairs are now sanitized individually, and REST arguments have explicit validation in addition to sanitization.<\/li>\n<li>Local source-file scanning now goes through a dedicated safe-reader that requires a <code>.php<\/code> extension, resolves and verifies the real path is inside an approved plugin\/theme directory, checks <code>is_readable()<\/code>, and no longer suppresses errors with <code>@<\/code>.<\/li>\n<li>The \"missing required files\" admin notice no longer references Composer; end users are told to reinstall the plugin instead (the required files ship inside the plugin ZIP).<\/li>\n<li>The welcome notice can now be permanently dismissed via a nonce-protected, capability-checked action; it no longer reappears after being dismissed.<\/li>\n<li>CSV log exports now prefix any cell that starts with <code>=<\/code>, <code>+<\/code>, <code>-<\/code>, or <code>@<\/code> with a single quote to prevent spreadsheet formula-injection when opened in Excel\/Sheets\/LibreOffice.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Renamed the plugin to Gsoft Labs Blocks Compatibility Scanner for WooCommerce (display name, slug, and text domain) to clearly show it is an independent, unaffiliated tool and avoid confusion with the WooCommerce trademark.<\/li>\n<li>Removed the \"Allow anonymous compatibility statistics\" setting \u2014 it never actually sent any data, and its presence was misleading. This plugin does not collect or transmit any data.<\/li>\n<li>Clarified in the readme and Help &amp; Support page that no data ever leaves your site.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Added: a new \"Help &amp; Support\" page with a step-by-step guide to every page, an FAQ, and links to documentation and support.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Fixed: styles and scripts now load correctly on every WB Compat page (they were silently missing on all pages except the Dashboard).<\/li>\n<li>Changed: redesigned all admin pages with a readiness gauge, a per-area breakdown chart, plain-language \"why this matters\" messaging, and a beginner-friendly getting-started guide.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Fixed: migrated custom fields now register correctly on the Blocks checkout (field ID namespace separator was being stripped).<\/li>\n<li>Fixed: developer log downloads (JSON\/TXT\/CSV) now work.<\/li>\n<li>Fixed: onboarding \"Start Scan\" button now redirects and starts the first scan.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Scan WooCommerce Cart and Checkout Blocks compatibility, identify risks, migrate supported fields, and create safe test pages.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/355669","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=355669"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/gsoftlabs"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=355669"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=355669"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=355669"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=355669"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=355669"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=355669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}