Skip to main content

Suma Woo Order Tracking

Location: web/app/plugins/suma-woo-order-tracking/ Version: 1.1.4 Author: Rhino Group Text Domain: suma-woo-order-tracking


Overviewโ€‹

The suma-woo-order-tracking plugin provides customers with an interactive order tracking page featuring a visual progress bar. It supports both logged-in customers and guests (by order number + email), and maps WooCommerce order statuses to human-readable tracking steps configured by the store admin.


File Structureโ€‹

suma-woo-order-tracking/
โ”œโ”€โ”€ init.php โ† Main plugin bootstrap
โ”œโ”€โ”€ bundle.php โ† Optional bundled dependencies
โ”œโ”€โ”€ readme.txt โ† Plugin documentation
โ”œโ”€โ”€ changelog.md โ† Version history
โ”œโ”€โ”€ package.json / webpack.mix.js โ† Build configuration
โ”œโ”€โ”€ inc/
โ”‚ โ”œโ”€โ”€ class-plugin.php โ† Main plugin orchestrator
โ”‚ โ”œโ”€โ”€ class-admin.php โ† WooCommerce settings registration
โ”‚ โ”œโ”€โ”€ class-frontend.php โ† Shortcode, My Account integration
โ”‚ โ””โ”€โ”€ class-wc-settings.php โ† Settings page implementation
โ”œโ”€โ”€ lib/
โ”‚ โ””โ”€โ”€ plugin-update-checker/ โ† Auto-update checker library
โ”œโ”€โ”€ src/
โ”‚ โ”œโ”€โ”€ js/ โ† Source JavaScript
โ”‚ โ””โ”€โ”€ scss/ โ† Source SCSS
โ”œโ”€โ”€ dist/
โ”‚ โ”œโ”€โ”€ css/admin.css
โ”‚ โ”œโ”€โ”€ css/frontend.css
โ”‚ โ””โ”€โ”€ js/admin.js
โ””โ”€โ”€ templates/
โ”œโ”€โ”€ guest-form.php โ† Guest order lookup form
โ”œโ”€โ”€ tracking-page.php โ† Main tracking display with progress bar
โ””โ”€โ”€ tracking-disabled.php โ† Shown when tracking feature is disabled

PHP Classesโ€‹

\Suma\OrderTracking\Pluginโ€‹

The main plugin orchestrator.

Key responsibilities:

  • Plugin activation: cleans up deprecated settings, flushes rewrite rules
  • Plugin deactivation: cleanup
  • Loads all other classes via run() method
namespace Suma\OrderTracking;

class Plugin {
public function activate() : void { ... }
public function deactivate() : void { ... }
public function run() : void { ... }
public function get_key() : string { ... } // Option key prefix
public function get_name() : string { ... } // Plugin display name
}

\Suma\OrderTracking\Adminโ€‹

Manages the WordPress admin interface for order tracking configuration.

Key responsibilities:

  • Registers the WooCommerce settings tab (WooCommerce โ†’ Settings โ†’ Order Tracking)
  • Enqueues admin JavaScript and CSS (color picker, steps manager)
  • Sanitizes and saves tracking step configuration

\Suma\OrderTracking\Frontendโ€‹

Handles all front-end rendering and integration.

Key responsibilities:

  • Enqueues dist/css/frontend.css on pages containing the tracking shortcode
  • Registers the [suma_order_tracking] shortcode
  • Adds a "Track Order" link to the My Account โ†’ Orders table

My Account integration:

// Adds tracking link to each order row in My Account โ†’ Orders
add_filter( 'woocommerce_my_account_my_orders_actions', [ $this, 'add_tracking_link_to_orders_table' ], 10, 2 );

\Suma\OrderTracking\WC_Settingsโ€‹

Extends WC_Settings_Page to create the WooCommerce settings tab.

Settings ID: order_tracking

Settings Fields:

Setting KeyTypeDescription
show_tracking_link_order_tableCheckboxShow tracking link in My Account โ†’ Orders table
enable_guest_accessCheckboxAllow guests to look up orders via order number + email
tracking_pathTextURL path to the tracking page (e.g., /track-order)
accent_colorColor pickerPrimary progress bar color
complete_colorColor pickerCompleted step color
guest_form_additional_contentWYSIWYG editorAdditional content shown on the guest lookup form

Tracking Steps Configuration:

Tracking steps are configured via a JSON-powered JavaScript UI in the settings page. Each step maps one or more WooCommerce order statuses to a display label:

[
{ "label": "Order Placed", "statuses": ["pending", "on-hold"] },
{ "label": "Payment Confirmed", "statuses": ["processing"] },
{ "label": "Shipped", "statuses": ["partial-shipped"] },
{ "label": "Delivered", "statuses": ["completed"] }
]

Steps are stored in the suma_order_tracking_steps option as a JSON array.


Shortcode: [suma_order_tracking]โ€‹

Place this shortcode on the designated order tracking page (e.g., /track-order).

Behavior:

ScenarioOutput
Guest, no order IDShows the guest order lookup form (guest-form.php)
Guest, submitted order + emailValidates and shows tracking for that order
Logged-in customer, no order IDShows their most recent orders with tracking links
Any user, ?order_id=123 in URLShows tracking page for order #123
Tracking feature disabledShows tracking-disabled.php message

Example page setup:

  1. Create a WordPress page at /track-order
  2. Add [suma_order_tracking] to the page content (or use an Elementor shortcode block)
  3. Set the Tracking Path in WooCommerce โ†’ Settings โ†’ Order Tracking to /track-order

Templatesโ€‹

tracking-page.phpโ€‹

Renders the full tracking page including:

  • Order summary header (order number, date, status)
  • Visual progress bar showing current step
  • Order items table
  • Shipping information (populated via suma_order_tracking_shipping_info filter)

guest-form.phpโ€‹

Renders the guest lookup form with:

  • Order number input
  • Email address input
  • Any additional content from guest_form_additional_content setting
  • CSRF protection (WP nonce)

tracking-disabled.phpโ€‹

A simple message displayed when the tracking feature is disabled in WooCommerce settings.


WordPress Hooksโ€‹

Actionsโ€‹

HookDescription
admin_initRegisters admin settings
admin_enqueue_scriptsLoads admin CSS/JS (color picker, steps manager)
initRegisters plugin update checker

Filtersโ€‹

HookDescription
woocommerce_get_settings_pagesAdds Order Tracking tab to WooCommerce settings
woocommerce_my_account_my_orders_actionsAdds tracking link to My Account โ†’ Orders table
woocommerce_settings_save_order_trackingRuns save logic for settings

Extension Filtersโ€‹

suma_order_tracking_shipping_infoโ€‹

Inject shipping carrier and tracking information into the tracking page.

add_filter( 'suma_order_tracking_shipping_info', function( array $info, int $order_id ) : array {
// Fetch tracking from ShipStation or your shipping plugin
return [
'carrier' => 'FedEx',
'tracking' => '1234567890',
'tracking_url' => 'https://www.fedex.com/apps/fedextrack/?tracknumbers=1234567890',
];
}, 10, 2 );

suma_order_tracking_table_columnsโ€‹

Customize the columns displayed in the order items table on the tracking page.

add_filter( 'suma_order_tracking_table_columns', function( array $columns, \WC_Order $order ) : array {
$columns['weight'] = __( 'Weight', 'suma-woo-order-tracking' );
return $columns;
}, 10, 2 );

do_action( 'suma_order_tracking_table_column_{column_id}', $item, $order )โ€‹

Render custom column content:

add_action( 'suma_order_tracking_table_column_weight', function( $item, \WC_Order $order ) : void {
echo esc_html( $item->get_meta( '_weight' ) . ' oz' );
}, 10, 2 );

Database Optionsโ€‹

Option KeyTypeDescription
suma_order_tracking_optionsArrayGeneral plugin settings
suma_order_tracking_stepsJSON stringTracking step definitions
suma_order_pending_payment_email_sentOrder metaFlag: pending payment email sent
suma_order_vault_email_sentOrder metaFlag: vault storage email sent

Admin Interface Locationโ€‹

WooCommerce โ†’ Settings โ†’ Order Tracking (tab added by WC_Settings class)