Skip to main content

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 container
  • default_radius - Default search radius in miles
  • show_filters - Show/hide filter options

REST API Endpoints

Base: /wp-json/suma-dealer-locator/v1/

  • GET /dealers - List all dealers
  • GET /dealers/{id} - Single dealer
  • GET /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 form
  • locator-map.php - Google Maps display
  • locator-results.php - Search results list
  • dealer-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

  1. System Patches - Core WordPress modifications
  2. Admin Enhancements - Admin UI improvements
  3. Frontend Modifications - Public site customizations
  4. Image Handling - Image optimization settings
  5. WooCommerce Tweaks - (If WooCommerce active)
  6. 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 address
  • suma_patches_mailgun_from_name - From name
  • suma_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_site option
  • Redirects all emails
  • May disable certain production features

Detection criteria in class-dev.php.

WP Rocket Control

Action: wp_loadedwp_rocket_disabled()

Can disable WP Rocket caching programmatically.

Filters Applied

  • recovery_mode_email - Change notification recipient
  • wp_mail - Add Mailgun Reply-To headers
  • wp_mail_from - Change From email
  • wp_mail_from_name - Change From name
  • wp_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_email
  • suma_patches_mailgun_from_name
  • suma_patches_mailgun_reply_to
  • suma_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 path
  • SUMA_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:

  1. Enqueues tracking scripts
  2. Listens for e-commerce events
  3. Pushes to dataLayer
  4. Triggers custom events

Build Process

Build Tool: Laravel Mix (webpack.mix.js)

Commands:

  • npm install - Install dependencies
  • npm run dev - Development build
  • npm run production - Production build
  • npm 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:

  1. Create triggers for custom events (productView, addToCart, etc.)
  2. Create tags to fire on those triggers
  3. 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 event
  • suma_analytics_before_track - Before event tracking
  • suma_analytics_after_track - After event tracking

Filters:

  • suma_analytics_event_data - Modify event data before push
  • suma_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-locator references 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.