Custom Plugins
Suma-branded custom plugins provide dealer locator, WordPress core patches, and analytics functionality.
Overview
HHA Sports uses three custom Suma plugins developed by Rhino Group to extend WordPress functionality with dealer locator, system patches, and analytics tracking.
Suma Dealer Locator v3.0.2
Location: wp-content/plugins/suma-dealer-locator/
Version: 3.0.2
Author: Rhino Group
Purpose
Allow users to find HHA Sports dealers closest to their location with search by address, city, zip code, or geolocation.
Features
- Dealer Custom Post Type - Manage dealers in WordPress admin
- Google Maps Integration - Visual dealer location display
- GeoIP Detection - Automatically detect user location
- Search Interface - Address/zip search with distance calculation
- Dealer Profiles - Contact info, hours, website, custom fields
- Visual Composer Support - VC component for embedding
- Shortcodes - Flexible display options
- Carbon Fields - Custom field management
- Custom API Endpoints - REST routes for dealer data
Directory Structure
suma-dealer-locator/
├── suma-dealer-locator.php # Main plugin file (v3.0.2)
├── admin/ # Admin UI
├── frontend/ # Public-facing functionality
├── includes/
│ ├── class-suma-dealer-locator.php # Core plugin class
│ ├── class-activator.php # Activation logic
│ ├── class-deactivator.php # Deactivation logic
│ ├── class-i18n.php # Internationalization
│ ├── class-utils.php # Utility functions
│ ├── class-custom-routes.php # REST API routes
│ └── class-visual-composer.php # VC integration
├── framework/ # Template loader
├── templates/ # Frontend templates
├── assets/ # CSS, JS, images
└── vendor/ # Composer dependencies (Carbon Fields)
Custom Post Type: Dealer
Post Type: suma_dealer
Supports: Title, editor, thumbnail
Capabilities: Standard post capabilities
Custom Fields
Managed via Carbon Fields:
- Contact Information: Phone, email, fax
- Address: Street, city, state, zip
- Coordinates: Latitude, longitude (for mapping)
- Business Details: Hours, website URL
- Additional Info: Custom dealer-specific data
Shortcodes
[suma_dealer_locator]
Display dealer locator search interface with map.
Attributes:
map_height- Height of map containerdefault_radius- Default search radius in milesshow_filters- Show/hide filter options
REST API Endpoints
Base: /wp-json/suma-dealer-locator/v1/
GET /dealers- List all dealersGET /dealers/{id}- Single dealerGET /dealers/search- Search dealers by location?lat=- Latitude?lng=- Longitude?radius=- Search radius (miles)?address=- Address to geocode and search
Visual Composer Component
Component: Suma Dealer Locator
Icon: Map marker
Category: Content
VC widget allows page builder integration with customizable settings.
Frontend Templates
Location: templates/
Overrideable in theme at: wp-content/themes/{theme}/suma-dealer-locator/
locator-search.php- Search formlocator-map.php- Google Maps displaylocator-results.php- Search results listdealer-single.php- Single dealer display
Dependencies
Composer Packages (in vendor/):
- Carbon Fields - Custom field library
External APIs:
- Google Maps JavaScript API - Map display
- Google Geocoding API - Address to coordinates
Configuration
Google Maps API Key: Set in plugin settings or via constant:
define('SUMA_DEALER_LOCATOR_GOOGLE_API_KEY', 'your-key-here');
Usage Example
Display dealer locator on any page:
[suma_dealer_locator map_height="500px" default_radius="50"]
Suma Patches v1.5.12.1
Location: wp-content/plugins/suma-patches/
Version: 1.5.12.1
Author: Rhino Group
Purpose
WordPress core patches and customizations to meet Rhino Group standards across all sites. Centralizes common modifications that would otherwise need to be repeated per-site.
Features
- System Patches - Core WordPress modifications
- Admin Enhancements - Admin UI improvements
- Frontend Modifications - Public site customizations
- Image Handling - Image optimization settings
- WooCommerce Tweaks - (If WooCommerce active)
- Algolia Customizations - Search enhancements
Directory Structure
suma-patches/
├── suma-patches.php # Main plugin file (v1.5.12.1)
└── inc/
├── class-system.php # System-level patches
├── class-admin.php # Admin area patches
├── class-frontend.php # Frontend patches
├── class-images.php # Image handling
├── class-woocommerce.php # WooCommerce patches
├── class-algolia.php # Algolia patches
└── class-dev.php # Dev site detection
System Patches (class-system.php)
Email Configuration
Recovery Mode Email: Redirects to [email protected]
Mailgun Configuration (via options):
suma_patches_mailgun_from_email- From addresssuma_patches_mailgun_from_name- From namesuma_patches_mailgun_reply_to- Reply-To address
Dev Site Email Override: All emails redirect to configured address on dev sites
Dev Site Detection
Automatically detects development environments and:
- Sets
suma_is_dev_siteoption - Redirects all emails
- May disable certain production features
Detection criteria in class-dev.php.
WP Rocket Control
Action: wp_loaded → wp_rocket_disabled()
Can disable WP Rocket caching programmatically.
Filters Applied
recovery_mode_email- Change notification recipientwp_mail- Add Mailgun Reply-To headerswp_mail_from- Change From emailwp_mail_from_name- Change From namewp_mail(99999 priority) - Dev site email redirect
Admin Patches (class-admin.php)
Enhancements to WordPress admin:
- Custom admin styles
- Dashboard widgets
- Admin menu modifications
- User experience improvements
Frontend Patches (class-frontend.php)
Public-facing site modifications:
- Custom scripts/styles
- Template modifications
- Content filters
Image Patches (class-images.php)
Image handling enhancements:
- Image compression settings
- Thumbnail generation
- Image size management
WooCommerce Patches (class-woocommerce.php)
Only loads if WooCommerce is active
WooCommerce-specific modifications:
- Product display enhancements
- Cart/checkout tweaks
- Email customizations
Algolia Patches (class-algolia.php)
Only loads if Algolia plugin is active
Algolia search customizations:
- Custom search templates
- Result filtering
- Autocomplete enhancements
Configuration
Most settings managed via WordPress options:
suma_patches_mailgun_from_emailsuma_patches_mailgun_from_namesuma_patches_mailgun_reply_tosuma_is_dev_site
Debugging
Check SUMAPATCHESROOT constant for plugin path.
define('SUMAPATCHESROOT', plugin_dir_path(__FILE__));
Suma Analytics v1.3.5
Location: wp-content/plugins/suma-analytics-master/
Version: 1.3.5
Author: Rhino Group
Purpose
Provides analytics event triggers for e-commerce events compatible with Google Analytics, Google Tag Manager, and other analytics platforms.
Features
- E-commerce Event Tracking - Product views, add to cart, purchases
- Custom Event System - Define custom analytics events
- DataLayer Integration - Push events to Google Tag Manager dataLayer
- Admin Interface - Configure tracking settings
- Frontend Event Triggers - JavaScript event system
Directory Structure
suma-analytics-master/
├── init.php # Main plugin file (v1.3.5)
├── bundle.php # Asset bundling
├── inc/
│ ├── class-plugin.php # Core plugin class
│ ├── class-admin.php # Admin functionality
│ ├── class-frontend.php # Frontend tracking
│ └── class-utils.php # Helper functions
├── dist/ # Compiled JS/CSS
├── src/ # Source files
├── lib/ # Libraries
├── package.json # NPM dependencies
├── webpack.mix.js # Laravel Mix build config
└── readme.txt # Documentation
Constants
SUMA_ANALYTICS_NAME- "Suma Analytics"SUMA_ANALYTICS_KEY- "suma-analytics"SUMA_ANALYTICS_FILE- Plugin file pathSUMA_ANALYTICS_DIR- Plugin directory
Event Tracking
E-commerce Events
Product View:
dataLayer.push({
'event': 'productView',
'productID': '123',
'productName': 'Example Product',
'productPrice': '99.99'
});
Add to Cart:
dataLayer.push({
'event': 'addToCart',
'productID': '123',
'quantity': 1
});
Purchase:
dataLayer.push({
'event': 'purchase',
'transactionID': 'ORDER123',
'transactionTotal': '199.99'
});
Admin Interface
Location: Suma Analytics → Settings (admin menu)
Configure:
- Enable/disable tracking
- Custom event definitions
- DataLayer variable names
- Debug mode
Frontend Integration
Plugin automatically:
- Enqueues tracking scripts
- Listens for e-commerce events
- Pushes to dataLayer
- Triggers custom events
Build Process
Build Tool: Laravel Mix (webpack.mix.js)
Commands:
npm install- Install dependenciesnpm run dev- Development buildnpm run production- Production buildnpm run watch- Watch for changes
Dependencies
NPM Packages (package.json):
- Laravel Mix
- Various webpack loaders
- Additional build tools
Integration with BigCommerce
Works with BigCommerce for WordPress and Suma theme Klaviyo integration to track:
- Product page views
- Add to cart clicks
- Checkout events
- Purchase completion
Integration with Google Tag Manager
Pushes events to window.dataLayer[] for GTM to consume.
GTM Setup:
- Create triggers for custom events (productView, addToCart, etc.)
- Create tags to fire on those triggers
- Send data to Google Analytics, Facebook Pixel, etc.
Debug Mode
Enable debug mode to log events to browser console:
update_option('suma_analytics_debug', true);
Console will show:
[Suma Analytics] Event: productView
[Suma Analytics] Data: {productID: "123", ...}
Hooks & Filters
Actions:
suma_analytics_track_event- Trigger custom eventsuma_analytics_before_track- Before event trackingsuma_analytics_after_track- After event tracking
Filters:
suma_analytics_event_data- Modify event data before pushsuma_analytics_enabled- Enable/disable tracking conditionally
Usage Example
Trigger custom event:
do_action('suma_analytics_track_event', 'customEvent', [
'eventCategory' => 'User Interaction',
'eventAction' => 'Button Click',
'eventLabel' => 'CTA Button'
]);
Common Integration Points
All three Suma plugins integrate with:
- WordPress Admin - Custom settings pages
- REST API - Custom endpoints
- Theme Hooks - Filters and actions
- Third-party Plugins - BigCommerce, Algolia, etc.
Development Notes
Plugin Updates
Suma plugins may use:
- Bitbucket Private Repository -
suma-dealer-locatorreferences Bitbucket for updates - Manual Updates - Check with Rhino Group for latest versions
Namespace
All Suma plugins use PHP namespaces:
Suma\DealerLocator\*Suma\Patches\*Suma\Analytics\*
Coding Standards
Follow WordPress Coding Standards and Rhino Group guidelines per default.instructions.md.
Related Documentation
- Theme System - Theme integration with Suma plugins
- Marketing Integrations - Analytics integration with Klaviyo
- Development Setup - Local plugin development