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.csson 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 Key | Type | Description |
|---|---|---|
show_tracking_link_order_table | Checkbox | Show tracking link in My Account โ Orders table |
enable_guest_access | Checkbox | Allow guests to look up orders via order number + email |
tracking_path | Text | URL path to the tracking page (e.g., /track-order) |
accent_color | Color picker | Primary progress bar color |
complete_color | Color picker | Completed step color |
guest_form_additional_content | WYSIWYG editor | Additional 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:
| Scenario | Output |
|---|---|
| Guest, no order ID | Shows the guest order lookup form (guest-form.php) |
| Guest, submitted order + email | Validates and shows tracking for that order |
| Logged-in customer, no order ID | Shows their most recent orders with tracking links |
Any user, ?order_id=123 in URL | Shows tracking page for order #123 |
| Tracking feature disabled | Shows tracking-disabled.php message |
Example page setup:
- Create a WordPress page at
/track-order - Add
[suma_order_tracking]to the page content (or use an Elementor shortcode block) - 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_infofilter)
guest-form.phpโ
Renders the guest lookup form with:
- Order number input
- Email address input
- Any additional content from
guest_form_additional_contentsetting - CSRF protection (WP nonce)
tracking-disabled.phpโ
A simple message displayed when the tracking feature is disabled in WooCommerce settings.
WordPress Hooksโ
Actionsโ
| Hook | Description |
|---|---|
admin_init | Registers admin settings |
admin_enqueue_scripts | Loads admin CSS/JS (color picker, steps manager) |
init | Registers plugin update checker |
Filtersโ
| Hook | Description |
|---|---|
woocommerce_get_settings_pages | Adds Order Tracking tab to WooCommerce settings |
woocommerce_my_account_my_orders_actions | Adds tracking link to My Account โ Orders table |
woocommerce_settings_save_order_tracking | Runs 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 Key | Type | Description |
|---|---|---|
suma_order_tracking_options | Array | General plugin settings |
suma_order_tracking_steps | JSON string | Tracking step definitions |
suma_order_pending_payment_email_sent | Order meta | Flag: pending payment email sent |
suma_order_vault_email_sent | Order meta | Flag: vault storage email sent |
Admin Interface Locationโ
WooCommerce โ Settings โ Order Tracking (tab added by WC_Settings class)