Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/levon-brokenponyclub/custom-woo-features/archive/refs/heads/main.zipCustom WooCommerce Features Plugin
Author: Broken Pony Club
Author URL: https://www.brokenpony.club
Version: 1.0.1
Requires WordPress: 5.0+
Requires WooCommerce: 4.0+
Tested up to: WordPress 6.4
License: GPL v2 or later
Overview
Custom WooCommerce Features is a modular WordPress plugin that extends WooCommerce functionality with essential e-commerce enhancements. Built with a clean, object-oriented architecture, this plugin provides seamless integration with popular themes and page builders while maintaining WooCommerce core compatibility.
The plugin features a centralized admin interface with tabbed settings organization, allowing merchants to configure multiple enhancements from a single location.
Features
⚙️ General Settings
- VAT Configuration: Enhanced tax display and calculation options
- Regional Settings: Locale-specific pricing and display preferences
- Performance Optimization: Efficient asset loading and caching strategies
🚚 Free Shipping Enhancements
- Progress Indicators: Show customers how close they are to qualifying for free shipping
- Customizable Thresholds: Set multiple shipping tiers and promotional levels
- Cart Integration: Real-time shipping calculations and notifications
📦 Product Bundles
- Bundle Discounts: Create product bundle offerings with dynamic pricing
- Bundle UI Configuration: Customizable bundle presentation and layout options
- Cross-Sell Integration: Enhanced product relationships and recommendations
� Quick Cart Enhancement
- Mini-Cart Controls: Add quantity steppers (+/-) and remove links directly in the mini-cart
- Template Override Protection: Ensures WooCommerce native mini-cart template is used, preventing conflicts with Elementor Pro and other page builders
- AJAX-Powered: Smooth cart updates without page reloads
- Theme Compatibility: Works seamlessly with JupiterX and other WooCommerce-compatible themes
Installation
Via WordPress Admin (Recommended)
- Download the plugin ZIP file from your vendor or repository
- Navigate to WordPress Admin > Plugins > Add New
- Click Upload Plugin and select the downloaded ZIP file
- Click Install Now and then Activate
- Navigate to Custom Woo Features in the admin menu to configure settings
Manual Installation
- Upload the
custom-woo-featuresfolder to/wp-content/plugins/ - Activate the plugin through the Plugins menu in WordPress
- Configure settings via Custom Woo Features admin page
Requirements Check
The plugin will automatically check for WooCommerce availability on activation. If WooCommerce is not installed or active, an admin notice will prompt for installation.
Configuration
Quick Cart Settings
Navigate to Custom Woo Features > Quick Cart
Enable +/- Qty and Remove
- Purpose: Adds quantity controls and remove links to mini-cart items
- Default: Enabled
- Impact: Improves user experience by allowing cart modifications without visiting cart page
Template Override Protection
- Automatic: Forces WooCommerce native mini-cart template usage
- Prevents: Conflicts with Elementor Pro mini-cart customizations
- Benefits: Ensures consistent UL/LI markup structure for styling and functionality
Free Shipping Settings
Navigate to Custom Woo Features > Free Shipping
Configure shipping thresholds, progress indicators, and promotional messaging to encourage larger order values.
Bundle Settings
Navigate to Custom Woo Features > Bundles
Set up product bundle configurations, discount structures, and cross-sell relationships.
General Settings
Navigate to Custom Woo Features > General
Configure VAT display options, regional preferences, and global plugin behaviors.
Technical Architecture
Plugin Structure
custom-woo-features/
├── assets/
│ ├── css/
│ │ ├── admin/
│ │ ├── free-shipping/
│ │ └── quick-cart/
│ └── js/
│ ├── admin/
│ ├── free-shipping/
│ └── quick-cart/
├── includes/
│ ├── admin/
│ │ └── class-cwf-admin.php
│ ├── features/
│ │ ├── bundles/
│ │ ├── free-shipping/
│ │ ├── general/
│ │ └── quick-cart/
│ └── class-cwf-plugin.php
├── custom-woo-features.php
└── README.md
Core Classes
CWF_Plugin
- Purpose: Main plugin orchestrator and singleton instance manager
- Responsibilities: Feature registration, asset management, options handling
- Dependencies: WooCommerce active check, autoloading system
CWF_Admin
- Purpose: Admin interface management and settings framework
- Features: Tabbed settings UI, option sanitization, asset enqueuing
- Security: Nonce verification, capability checks, input sanitization
Feature Classes
Each feature is implemented as a self-contained class with:
- Admin settings integration via hooks
- Frontend functionality and asset management
- AJAX handlers for dynamic interactions
- Template override capabilities
Asset Management
- Conditional Loading: Assets only enqueued when features are enabled
- Version Control: Cache-busting via plugin version number
- Dependency Management: Proper jQuery and WooCommerce script dependencies
Security Implementation
- Nonce Verification: All AJAX requests protected with WordPress nonces
- Capability Checks: Admin access restricted to
manage_woocommercecapability - Input Sanitization: All user inputs sanitized using WordPress core functions
- Output Escaping: All outputs properly escaped for XSS prevention
Developer Documentation
Adding New Features
- Create Feature Directory: Add new feature folder under
includes/features/ - Implement Feature Class: Follow naming convention
CWF_Feature_{Name} - Register Feature: Add to
class-cwf-plugin.phpconstructor - Add Admin Integration: Implement admin tab and settings hooks
Feature Class Template
<?php
class CWF_Feature_Example {
const OPTION_KEY = 'example';
public function __construct() {
add_filter( 'cwf_admin_tabs', [ $this, 'add_admin_tab' ] );
add_action( 'cwf_register_settings', [ $this, 'register_settings' ] );
add_action( 'cwf_render_tab_example', [ $this, 'render_settings_tab' ] );
}
public function add_admin_tab( $tabs ) {
$tabs['example'] = __( 'Example Feature', 'custom-woo-features' );
return $tabs;
}
public static function get_setting( $key, $default = '' ) {
$opts = CWF_Plugin::get_options();
return isset( $opts[ self::OPTION_KEY ][ $key ] )
? $opts[ self::OPTION_KEY ][ $key ]
: $default;
}
}
Hooks and Filters
Admin Hooks
cwf_admin_tabs: Register new admin tabscwf_register_settings: Register settings sections and fieldscwf_render_tab_{tab_name}: Render tab content
Frontend Hooks
- Standard WordPress and WooCommerce action/filter hooks
- Feature-specific AJAX endpoints with
wp_ajax_prefix
AJAX Implementation
All AJAX handlers follow WordPress best practices:
- Nonce verification via
check_ajax_referer() - Proper error handling and response formatting
- WooCommerce fragment integration for cart updates
Compatibility
WordPress
- Minimum Version: 5.0
- Tested Up To: 6.4
- Multisite: Compatible
WooCommerce
- Minimum Version: 4.0
- Tested Up To: 8.2
- HPOS Compatible: Yes
Themes
- JupiterX: Fully tested and optimized
- Astra: Compatible
- Storefront: Compatible
- GeneratePress: Compatible
- Other Themes: Should work with any WooCommerce-compatible theme
Page Builders
- Elementor: Compatible with template override protection
- Elementor Pro: Template conflicts resolved via override system
- Beaver Builder: Compatible
- Divi: Compatible
Plugins
- WooCommerce: Required dependency
- Advanced Custom Fields: Compatible
- WPML: Translation ready
- Yoast SEO: Compatible
Troubleshooting
Common Issues
Mini-Cart Not Displaying Properly
- Cause: Theme or plugin template conflicts
- Solution: Ensure Quick Cart feature is enabled; template override protection should resolve most conflicts
- Debug: Check browser console for JavaScript errors
AJAX Requests Failing
- Cause: Nonce verification failure or insufficient permissions
- Solution: Clear caches and ensure user has proper WooCommerce capabilities
- Debug: Monitor WordPress debug log for AJAX-related errors
Settings Not Saving
- Cause: PHP memory limits or conflicting plugins
- Solution: Increase PHP memory limit; deactivate conflicting plugins temporarily
- Debug: Enable WordPress debug logging to identify specific errors
Asset Loading Issues
- Cause: Caching plugins or CDN configuration
- Solution: Clear all caches and disable asset minification temporarily
- Debug: View page source to verify asset URLs are correct
Debug Mode
Enable WordPress debug mode for detailed error reporting:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Plugin Conflicts
If experiencing issues:
- Deactivate all plugins except WooCommerce and Custom Woo Features
- Test functionality
- Reactivate plugins one by one to identify conflicts
- Contact support with conflict details
Performance Considerations
Asset Optimization
- Conditional Loading: CSS/JS only loaded when features are active
- Minification: Assets should be minified for production
- Caching: Compatible with major caching plugins
Database Optimization
- Options Storage: Efficient single-option array storage
- Query Reduction: Minimal database queries via caching
- Cleanup: No orphaned data left on uninstall
Memory Usage
- Autoloading: Efficient class loading only when needed
- Singleton Pattern: Single instance management prevents memory duplication
- Feature Isolation: Modular architecture allows selective feature loading
Support and Maintenance
Version History
- 1.0.1: Current stable release with Quick Cart, Bundles, Free Shipping, and General features
- 1.0.0: Initial release with basic framework and Quick Cart functionality
Documentation
- Code Comments: Comprehensive PHPDoc documentation throughout codebase
- Inline Documentation: Clear variable naming and function descriptions
- Architecture Notes: Detailed class relationship documentation
Development Standards
- WordPress Coding Standards: Full compliance with WPCS
- Security Best Practices: Regular security audits and updates
- Performance Testing: Regular performance benchmarking and optimization
Support Channels
For technical support, bug reports, or feature requests:
- Developer: Broken Pony Club
- Documentation: This README and inline code documentation
Developed by Broken Pony Club | *A Digital Solutions Company | Simple Isn't Always Easy**