fix: Resolve Trainer Login page and link issues

- Fix shortcode registration for community login with correct namespace
- Create dedicated page template for community-login page
- Enable template_include filter to properly load custom page templates
- Fix early loading of Login_Handler class
- Update Trainer Login page title and template handling
- Ensure proper shortcode execution on the login page

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
bengizmo 2025-05-19 17:54:43 -03:00
parent 7d74938ab9
commit 12e360b6e6
4 changed files with 73 additions and 4 deletions

View file

@ -35,8 +35,9 @@ function hvac_ce_create_required_pages() {
HVAC_Logger::info('Starting page creation process', 'Activation');
$required_pages = [
'community-login' => [
'title' => 'Community Login',
'title' => 'Trainer Login',
'content' => '<!-- wp:shortcode -->[hvac_community_login]<!-- /wp:shortcode -->',
'template' => 'page-community-login.php',
],
'trainer-registration' => [
'title' => 'Trainer Registration',
@ -81,6 +82,11 @@ function hvac_ce_create_required_pages() {
'comment_status' => 'closed',
'ping_status' => 'closed',
];
// Check if we should use a specific template
if (!empty($page_data['template'])) {
$post_data['page_template'] = $page_data['template'];
}
$page_id = wp_insert_post($post_data);

View file

@ -0,0 +1,15 @@
/**
* Initialize hooks
*/
private function init_hooks() {
// Register activation/deactivation hooks
// Note: These hooks are typically registered outside the class instance context
// register_activation_hook(__FILE__, array($this, 'activate')); // This won't work correctly here
// register_deactivation_hook(__FILE__, array($this, 'deactivate')); // This won't work correctly here
// Initialize other hooks
add_action('init', array($this, 'init'));
// Template loading for custom pages
add_filter('template_include', array($this, 'load_custom_templates'));
} // End init_hooks

View file

@ -59,7 +59,19 @@ class HVAC_Community_Events {
'class-event-author-fixer.php', // Fix event author assignment
'class-hvac-dashboard.php' // New dashboard handler
];
// Make sure Login_Handler is loaded first for shortcode registration
$login_handler_path = HVAC_CE_PLUGIN_DIR . 'includes/community/class-login-handler.php';
if (file_exists($login_handler_path)) {
require_once $login_handler_path;
HVAC_Logger::info("Included file: community/class-login-handler.php", 'Core');
}
foreach ($files_to_include as $file) {
// Skip Login_Handler as we've already loaded it
if ($file === 'community/class-login-handler.php') {
continue;
}
$path = HVAC_CE_PLUGIN_DIR . 'includes/' . $file;
if (file_exists($path)) {
require_once $path;
@ -93,8 +105,8 @@ class HVAC_Community_Events {
// Initialize other hooks
add_action('init', array($this, 'init'));
// Template loading for custom pages (removed - using content filter instead)
// add_filter('template_include', array($this, 'load_custom_templates'));
// Template loading for custom pages
add_filter('template_include', array($this, 'load_custom_templates'));
} // End init_hooks
/**
@ -194,7 +206,7 @@ class HVAC_Community_Events {
add_shortcode('hvac_trainer_registration', array('HVAC_Registration', 'render_registration_form'));
// Community login shortcode
add_shortcode('hvac_community_login', array('HVAC_Community_Login_Handler', 'render_login_form'));
add_shortcode('hvac_community_login', array('\\HVAC_Community_Events\\Community\\Login_Handler', 'render_login_form'));
// Dashboard shortcode
add_shortcode('hvac_dashboard', array($this, 'render_dashboard'));
@ -241,6 +253,14 @@ class HVAC_Community_Events {
return $custom_template;
}
}
// Check for community-login page
if (is_page('community-login')) {
$custom_template = HVAC_CE_PLUGIN_DIR . 'templates/page-community-login.php';
if (file_exists($custom_template)) {
return $custom_template;
}
}
// Check for my-events page
if (is_page('my-events')) {

View file

@ -0,0 +1,28 @@
<?php
/**
* Template Name: HVAC Community Login
*
* This is the custom template for the community login page.
*
* @package HVAC_Community_Events
*/
get_header(); ?>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<div class="hvac-community-login-container">
<h1 class="entry-title">
<?php esc_html_e('Trainer Login', 'hvac-ce'); ?>
</h1>
<div class="entry-content">
<?php
// Process the shortcode directly
echo do_shortcode('[hvac_community_login]');
?>
</div>
</div>
</main><!-- #main -->
</div><!-- #primary -->
<?php get_footer(); ?>