Root cause: HVAC_Breadcrumbs::render() method did not exist - Fixed method call from render() to render_breadcrumbs() in template integration - Fixed same issue in trainer-header.php template part - Added comprehensive Playwright E2E test suite for debugging - Verified critical error resolution with 75% success rate ✅ Critical WordPress error fixed - pages now load successfully ✅ Basic breadcrumbs working (Home › Trainer › Dashboard) ✅ Dashboard functionality fully operational ⚠️ Enhanced navigation menu still needs theme integration Test results: 3/4 core features working - Critical error: FIXED ✅ - Dashboard: WORKING ✅ - Breadcrumbs: WORKING ✅ - Enhanced navigation: Pending theme integration 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
130 lines
No EOL
3.6 KiB
PHP
130 lines
No EOL
3.6 KiB
PHP
<?php
|
|
/**
|
|
* HVAC Template Integration
|
|
*
|
|
* Handles the integration of navigation and breadcrumbs into trainer pages
|
|
*/
|
|
|
|
if (!defined('ABSPATH')) {
|
|
exit;
|
|
}
|
|
|
|
class HVAC_Template_Integration {
|
|
|
|
/**
|
|
* Instance of this class
|
|
*/
|
|
private static $instance = null;
|
|
|
|
/**
|
|
* Get instance
|
|
*/
|
|
public static function instance() {
|
|
if (is_null(self::$instance)) {
|
|
self::$instance = new self();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct() {
|
|
add_action('init', array($this, 'init'));
|
|
}
|
|
|
|
/**
|
|
* Initialize
|
|
*/
|
|
public function init() {
|
|
// Add navigation and breadcrumbs to trainer pages
|
|
add_action('wp', array($this, 'setup_template_integration'));
|
|
}
|
|
|
|
/**
|
|
* Setup template integration based on current page
|
|
*/
|
|
public function setup_template_integration() {
|
|
// Check if we're on a trainer page
|
|
if ($this->is_trainer_page()) {
|
|
// Add navigation after header
|
|
add_action('astra_content_before', array($this, 'render_navigation_and_breadcrumbs'), 5);
|
|
|
|
// Alternative hooks for other themes
|
|
add_action('genesis_before_content', array($this, 'render_navigation_and_breadcrumbs'), 5);
|
|
add_action('twentytwenty_before_content', array($this, 'render_navigation_and_breadcrumbs'), 5);
|
|
|
|
// Generic fallback hook
|
|
add_action('wp_body_open', array($this, 'render_navigation_and_breadcrumbs'), 20);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check if current page is a trainer page
|
|
*/
|
|
private function is_trainer_page() {
|
|
global $wp;
|
|
|
|
// Get current URL path
|
|
$current_url = home_url(add_query_arg(array(), $wp->request));
|
|
|
|
// Check if URL contains /trainer/ but not /master-trainer/
|
|
return (strpos($current_url, '/trainer/') !== false && strpos($current_url, '/master-trainer/') === false);
|
|
}
|
|
|
|
/**
|
|
* Render navigation and breadcrumbs
|
|
*/
|
|
public function render_navigation_and_breadcrumbs() {
|
|
// Prevent duplicate rendering
|
|
static $rendered = false;
|
|
if ($rendered) {
|
|
return;
|
|
}
|
|
$rendered = true;
|
|
|
|
// Check if user has trainer capabilities
|
|
if (!current_user_can('hvac_trainer')) {
|
|
return;
|
|
}
|
|
|
|
?>
|
|
<div class="hvac-template-integration-wrapper">
|
|
<?php
|
|
// Render navigation if class exists
|
|
if (class_exists('HVAC_Trainer_Navigation')) {
|
|
$nav = new HVAC_Trainer_Navigation();
|
|
$nav->render_navigation();
|
|
}
|
|
|
|
// Render breadcrumbs if class exists
|
|
if (class_exists('HVAC_Breadcrumbs')) {
|
|
$breadcrumbs = new HVAC_Breadcrumbs();
|
|
echo $breadcrumbs->render_breadcrumbs();
|
|
}
|
|
?>
|
|
</div>
|
|
<?php
|
|
}
|
|
|
|
/**
|
|
* Alternative method to add navigation via shortcode in content
|
|
*/
|
|
public function add_navigation_to_content($content) {
|
|
if ($this->is_trainer_page() && current_user_can('hvac_trainer')) {
|
|
$nav_content = '';
|
|
|
|
// Add navigation before content
|
|
ob_start();
|
|
$this->render_navigation_and_breadcrumbs();
|
|
$nav_content = ob_get_clean();
|
|
|
|
$content = $nav_content . $content;
|
|
}
|
|
|
|
return $content;
|
|
}
|
|
}
|
|
|
|
// Initialize
|
|
HVAC_Template_Integration::instance();
|