Tutor Dashboard Modules
Modular student dashboard endpoints for Tutor LMS managed from WordPress admin.
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/webloti/tutor-dashboard-modules/archive/refs/heads/main.zipTutor Dashboard Modules is a WordPress plugin that extends the Tutor LMS student dashboard with admin-managed modules, without relying on theme hacks or fragile template overrides.
Each module is managed as its own entity inside Tutor LMS Pro > Tutor Modules and can render content from Elementor, shortcodes, internal PHP views, or WooCommerce account endpoints.
What It Solves
In many Tutor LMS projects, dashboard customizations end up scattered across:
- snippets in
functions.php - theme-level template overrides
- isolated WooCommerce logic
- custom endpoints that are hard to maintain
This plugin centralizes that work in a reusable modular layer so you can:
- create new dashboard tabs
- control who can see them
- choose where they appear
- embed them inside native Tutor pages
- render dynamic content through a structured architecture
Core Capabilities
Admin-managed modules
Each dashboard tab or view is stored as a module with its own configuration:
- title
- endpoint slug
- icon
- order
- status
- audience
- visibility rules
- content type
- fallback behavior
- navigation mode
Two navigation modes
Each module can work in one of two ways:
-
Standalone Menu Item- appears as its own item in the Tutor dashboard sidebar
- has its own dashboard URL
-
Embedded Inside Native Tutor Page- does not appear as a standalone sidebar item
- is shown as an internal tab inside a native Tutor page such as
purchase_history - keeps the native Tutor page as the first tab
This makes it possible to keep Purchase History as the native sidebar item while adding another internal tab such as Orders inside the same page.
Real Tutor LMS integration
The plugin integrates with Tutor through the dashboard hook system for:
- navigation
- permalinks
- routing
- template loading
It does not require changes to:
- the theme
functions.php- manual Tutor template overrides
Supported Content Types
The plugin currently supports:
elementor_templateshortcodephp_viewwoocommerce_endpoint
It also exposes architecture for developer-registered integrations:
custom_callbackdynamic_data_view
WooCommerce Endpoints
The woocommerce_endpoint content type lets you render WooCommerce account endpoints inside the Tutor dashboard.
Supported endpoints:
ordersdownloadsedit-accountedit-addresspayment-methodsadd-payment-method
Render modes
Depending on the endpoint, the admin can choose between:
hybridnative_tutorcustom
For orders and downloads, the plugin includes layouts designed to feel more aligned with Tutor LMS.
Orders improvements
The orders module already supports:
- an action column across all render modes
- same-page order details inside the dashboard
- a modern compact layout
- product or course cover images when available
- inherited filters and pagination when embedded inside
purchase_history
Elementor Support
Modules using elementor_template can render an Elementor template directly inside the Tutor dashboard.
The admin UI includes:
- searchable template picker by name
- cached selected label
- stable admin preview behavior where appropriate
This is useful for:
- resource hubs
- visual dashboards
- listing-driven content blocks
- JetEngine/Crocoblock-powered layouts via Elementor
Presets, Duplicate, and Import / Export
The plugin includes admin tools to speed up setup.
Presets
You can create starter modules from presets such as:
- Downloads
- Orders
- Resources
- Subscriptions
- External Tool
- Community
Duplicate
From the modules list you can duplicate a module and create a new draft copy.
Import / Export
You can also:
- export one or more modules to JSON
- import modules from JSON without overwriting existing entries
Visibility Rules
In addition to the base audience, a module can be restricted by:
- purchased WooCommerce product
- Tutor course enrollment
Validation applies to:
- menu visibility
- direct URL access
Module Placement
Standalone modules support two placement levels:
Global placement
From Module Settings, you define the global default placement for modules that keep Default Position.
Per-module placement
Each standalone module can either:
- use
Default Position - choose a specific placement in the Tutor menu
If a module uses a specific placement, it overrides the global one.
Embedded modules ignore standalone menu placement and use their selected native Tutor parent page instead.
Reactive Preview
The module editor includes a preview area that updates automatically as you change the configuration, without requiring a save for every adjustment.
This helps validate:
- WooCommerce layouts
- PHP views
- visual configuration choices
For module types where admin preview can compromise editor stability, the plugin safely degrades the preview behavior.
Production Performance
The plugin is designed to avoid global frontend overhead:
- frontend assets are scoped to Tutor dashboard screens that can render a module
- module lists are cached per request and through versioned WordPress object-cache keys
- standalone and embedded module lookups are cached during the request
- visibility rules for purchases and enrollments are cached during the request
- module render timing is measured only when debug mode is enabled
- slow-render logs are disabled by default in normal production traffic
The most expensive module types are usually Elementor templates and third-party shortcodes. For production sites, keep those templates focused, paginate data-heavy WooCommerce views, and enable performance debug only while diagnosing a slow dashboard screen.
Performance Debugging
Module Settings includes a performance debug option. When enabled, the plugin logs module renders that exceed the configured threshold.
Recommended usage:
- keep debug disabled during normal production use
- enable it temporarily when a dashboard screen feels slow
- inspect the recent logs or WooCommerce logger output when WooCommerce logging is available
- disable it again after diagnosing the slow module
The static production checks can be run without a WordPress test database:
php tests/static-production-checks.php
Admin Experience
Main management lives in:
Tutor LMS Pro > Tutor ModulesTutor LMS Pro > Module Settings
Module Settings groups:
- general shared settings
- presets
- import tools
Hooks and Extensibility
The plugin exposes several filters and extension points so developers can extend the system without editing core:
tdm/register_module_typestdm/register_rendererstdm/register_php_viewstdm/register_callbackstdm/register_dynamic_providerstdm/register_module_presetstdm/module_is_visibletdm/module_visibility_resulttdm/module_dependencies_statustdm/module_before_rendertdm/module_after_rendertdm/module_render_resulttdm/woocommerce_downloads_datatdm/elementor_template_outputtdm/module_fallback_messagetdm/embedded_tabs
Project Structure
tutor-dashboard-modules.phpsrc/Admin/admin UI, module list, settings, and editorsrc/Infrastructure/repository, persistence, validation, and rewritessrc/Tutor/Tutor dashboard integrationsrc/Rendering/renderers and rendering pipelinesrc/Integration/WooCommerce/providers and WooCommerce endpoint logicsrc/Integration/Elementor/Elementor bridgetemplates/frontend module templates and wrappersassets/admin and frontend assetsdocs/implementation notes and manual test plan
Current Plugin Version
Current plugin version: 0.2.0
The current version already supports:
- standalone modules and modules embedded inside native Tutor pages
- production hardening for recent Tutor LMS/Tutor Pro dashboard hook behavior
- scoped frontend assets and request-level visibility/cache optimizations
- optional slow-render diagnostics
- WooCommerce endpoints with multiple render modes
- Elementor-based modules
- internal PHP view modules
- presets, duplicate, import/export
- visibility rules
- reactive preview
- Tutor-style fallback states
Additional Documentation
Practical Requirements
Recommended environment for the full feature set:
- Tutor LMS
- Tutor LMS Pro
- WooCommerce
- Elementor
The plugin degrades safely when optional integrations are missing, but some module types will show fallback states instead of live content.
Notes
custom_callback and dynamic_data_view are still intended as developer-oriented extension points rather than end-user-first content modes.