- Added pre_get_posts hook to intercept legacy page queries
- Force 404 for legacy URLs to prevent WordPress from serving wrong pages
- Enhanced redirect handling to catch 404s that should redirect
- Moved template_redirect priority to 1 (very early)
- Ensures legacy URLs like /certificate-reports/ redirect properly
This follows WordPress best practices by intercepting queries early
in the request lifecycle before page templates are loaded.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added is_legacy_url() check in access control to allow redirects to happen first
- Legacy URLs like /hvac-dashboard/ now properly redirect to /trainer/dashboard/
- Prevents authentication check from blocking legacy URL redirects
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace deprecated register_legacy_rewrite_rules() call with HVAC_Route_Manager
- Ensures plugin activation works with new architecture
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create HVAC_Shortcodes class to centralize shortcode management
- Create HVAC_Scripts_Styles class for all script/style enqueuing
- Create HVAC_Route_Manager class for URL routing and redirects
- Update HVAC_Plugin to use new architecture components
- Remove duplicate functionality from HVAC_Community_Events
- Add comprehensive refactoring plan documentation
This refactoring resolves duplicate initialization issues and creates
a cleaner, more maintainable architecture with clear separation of concerns.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Implement singleton pattern for HVAC_Enhanced_Settings to prevent duplicate initialization
- Fix jQuery selector error by checking for valid hash selectors before using $(href)
- Add default email templates with professional copy for trainer notifications
- Update plugin version to 1.0.1 for cache busting
- Remove duplicate Enhanced Settings initialization from HVAC_Community_Events
- Add force cache refresh suffix to admin scripts
This resolves the duplicate content issue on email templates page and fixes
JavaScript errors in the admin interface.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add trainer status system (pending, approved, active, inactive, disabled)
- Create access control system based on trainer status
- Refactor Master Dashboard with enhanced trainer table
- Add status column and filtering
- Implement search and pagination
- Add bulk status update functionality
- Create status pages for pending and disabled trainers
- Implement approval workflow with email notifications
- Add email template management to settings page
- Include comprehensive test suite (unit, integration, E2E)
This allows Master Trainers to manage trainer accounts, approve new registrations,
and control access based on account status. Trainers must be approved before
accessing dashboard features.
Co-Authored-By: Claude <noreply@anthropic.com>
The manage event JavaScript was running on all pages and injecting "Create Event"
header and instructions into any page with matching content selectors. Added URL
path checking to ensure the JavaScript only runs on the actual manage event pages.
This fixes the issue where the registration page was showing event creation content
instead of just the registration form.
Co-Authored-By: Ben Reed <ben@tealmaker.com>
- Added explicit checks to prevent authentication redirects on registration page
- Added ensure_registration_page_public() method with priority 1 to run before other auth checks
- Included registration-pending and training-login pages in public pages list
- Added fallback function in main plugin file to remove auth hooks on registration page
This ensures that users can access /trainer/registration/ without being logged in, as intended for new trainer signups.
- Fixed registration form redirect to use hierarchical URL (/trainer/registration/)
- Removed inline styles from event manage page that were breaking theme layout
- Added proper CSS styles for event manage header navigation
- Created header component to properly display navigation on event manage page
- Fixed manage event page detection to be more specific
The event manage page now uses external CSS instead of inline styles that conflict with the theme.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed registration redirect URL to use hierarchical structure (/trainer/registration/)
- Fixed manage event page detection to be more specific (was matching any page with 'manage')
- Event creation content now only shows on actual event management pages
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
The HVAC_Manage_Event class was using is_page('manage') which was too generic
and could match any page with 'manage' in its slug. Changed to check for
specific page slugs: 'manage-event' and 'trainer-event-manage' to ensure
the event creation content only appears on the actual event management page.
This resolves the issue where "Create Your Training Event" content was
incorrectly showing on the trainer registration page.
Ben Reed <ben@tealmaker.com>
- Removed all CSS debug error_log statements from hvac-community-events.php
- Removed Request URI and OAuth callback debug messages from class-zoho-admin.php
- Updated gitignore to properly track plugin files
This eliminates the debug noise in production error logs.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>