-
Notifications
You must be signed in to change notification settings - Fork 2
License
abhishekfdd/woocommerce-ajaxified-cart
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
=== Ajaxified Cart === Contributors: abhishekfdd Donate link: https://github.com/abhishekfdd Tags: woocommerce, ajax, cart, add to cart, block themes Requires at least: 5.8 Tested up to: 6.8 Requires PHP: 8.0 Stable tag: 2.0.2 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html AJAX add-to-cart for WooCommerce: simple & variable products on archives/blocks via accessible modal and instant cart refresh. == Description == WooCommerce core does not provide AJAX add-to-cart on the single product page or for variable products listed on archive pages (it redirects to the single view). This plugin adds an unobtrusive AJAX workflow for: * Simple products (single product page button becomes AJAX) * Variable products on archive & block-based Product Collection (opens an accessible modal to choose attributes, then adds via AJAX) * Classic themes and modern block/FSE themes (2025 and later) with Product Collection blocks Highlights: * Works with WooCommerce fragments (mini-cart updates automatically) * Accessible modal (focus trap, ESC to close, restore focus) * Nonce-secured AJAX endpoints; sanitized and validated input * Settings page to enable/disable variable product archive functionality * Block theme compatibility (intercepts "Select options" buttons) with slug/product_id fallback * Performance-minded (loads minified bundles built via Webpack; falls back to source if missing) * Translations auto-loaded from WordPress.org (no manual POT/PO generation required) Privacy: This plugin does not send any data to external services. It only uses WooCommerce cart/session APIs. == Installation == 1. Upload the `ajaxified-cart-woocommerce` folder to `/wp-content/plugins/`. 2. Activate the plugin through the "Plugins" menu in WordPress. 3. (Optional) Visit Settings > General > Ajaxified Cart to enable variable product archive AJAX. 4. (Developers) Build assets if modifying JS: `npm install && npm run build`. == Frequently Asked Questions == = Does it work with block / FSE themes like Twenty Twenty-Five? = Yes. Variable product "Select options" buttons in Product Collection blocks are intercepted, opening a modal for attributes. = How do I enable AJAX for variable products on archive pages? = Go to Settings > General > Ajaxified Cart and check "Enable ajaxified cart for variable products on archive page". = Can I customize the modal styling? = Yes. Override or enqueue your own CSS after `abwc-modal` or copy the CSS file and adjust. = Will this conflict with caching or optimization plugins? = Typically no. Ensure the localized nonce is not stripped and that minification does not remove required data attributes. = Does it support multi-site? = Yes, it works on multi-site installations. = How are translations handled? = They are served automatically from WordPress.org language packs; no manual tools or bundled .mo files are needed. == Screenshots == 1. Variable product modal on block-based archive 2. AJAX add-to-cart on single product page (Provide actual screenshot images named screenshot-1.png, screenshot-2.png before submitting.) == Changelog == = 2.0.2 = * Fix: Prefixed bootstrap variable for URL to satisfy WPCS global prefix rule. * Tweak: Shorter plugin header/tagline (<150 chars) for WordPress.org guidelines. * Security: Refinement of variation attribute sanitization (removed phpcs ignore, explicit key/value cleanup). * Cleanup: Removed unused POT tooling file and generator script; relies on WP.org language packs. * Cleanup: Removed uninstall references/documentation. = 2.0.1 = * Security: Strengthened sanitization for quantity, variation data, product slug, and variation_id validation. * Added Requires Plugins header for explicit WooCommerce dependency. * Escaped output of hidden AJAX input via wp_kses. * Removed legacy translation loader & uninstall cleanup code; simplified README. = 2.0.0 = * Build migration: moved from Grunt to Webpack (minified bundles + source fallback). * Performance & code structure improvements. * Compatibility updates: Tested up to WordPress 6.8.3 and recent WooCommerce versions. * Block theme support: Product Collection block variable products open an AJAX modal. * Security: Added nonce verification + full sanitization for all AJAX inputs. * Accessibility: Focus trap, ESC close, refresh link, restored focus to triggering button, improved modal semantics. * Internationalization: Auto-load via WordPress.org (removed manual textdomain loader & POT tooling). * Styling: Introduced dedicated modal stylesheet (abwc-modal.css). * Compliance: ABSPATH guards across files, WPCS docblock adjustments, sanitized settings. * Fallback logic: Ensures dist minified JS used when available, source files otherwise. = 1.0.0 = * Initial release = 1.0.1 = * Code Refactor for performance = 1.0.2 = * Single Product page AJAX fix = 1.0.3 = * Cart Display fix = 1.2.0 = * Added admin settings page for enabling/disabling ajaxified cart for variable products on shop page. * Now ajaxified cart is working for variable products on shop page. * Notices fixed on product single page. = 1.2.1 = * Fatal error fix = 1.2.2 = * Simple products archive ajax add to cart when variable product archive ajax option is enabled issue fix. * Fixed 500 error when trying to add more variation products to cart than stock holds. == Upgrade Notice == = 2.0.0 = Major release with build migration, accessibility improvements, security hardening, and block theme support. Please update. == Development == Build commands: 1. Install dependencies: npm install 2. Production build (minified + source maps): npm run build 3. Watch during development: npm run watch 4. Lint JS: npm run lint Translations: WordPress.org language packs auto-load this plugin's strings. The former POT/PO/MO tooling and i18n loader file were removed (WP 4.6+). Do not add a load_plugin_textdomain() call; simply keep the Text Domain header accurate. WooCommerce is a registered trademark of Automattic Inc. This plugin is not affiliated with or endorsed by Automattic/WooCommerce.