$callbacks) { foreach ($theme_prefixes as $prefix) { if (strpos($hook_name, $prefix) === 0) { // Check if any HVAC classes are hooked to this foreach ($callbacks as $priority => $functions) { foreach ($functions as $function) { if (is_array($function['function']) && is_object($function['function'][0]) && strpos(get_class($function['function'][0]), 'HVAC') !== false) { $theme_hooks[] = $hook_name; break 2; } } } } } } if (empty($theme_hooks)) { echo "✓ No HVAC hooks attached to theme-specific filters\n"; } else { echo "✗ Found HVAC hooks on theme filters: " . implode(', ', array_unique($theme_hooks)) . "\n"; } // Test 4: Check Layout Manager echo "\nTest 4: Checking Layout Manager...\n"; if (class_exists('HVAC_Layout_Manager')) { echo "✓ Theme-agnostic Layout Manager is loaded\n"; // Check if it's working $layout_manager = HVAC_Layout_Manager::instance(); if (is_object($layout_manager)) { echo "✓ Layout Manager instance created successfully\n"; } } else { echo "✗ Layout Manager class not found\n"; } // Test 5: Check CSS files echo "\nTest 5: Checking for theme-specific CSS files...\n"; $css_dir = $plugin_dir . 'assets/css/'; $theme_css_files = []; if (is_dir($css_dir)) { $css_files = glob($css_dir . '*.css'); foreach ($css_files as $file) { $filename = basename($file); if (stripos($filename, 'astra') !== false || stripos($filename, 'ast-') !== false || stripos($filename, 'divi') !== false) { $theme_css_files[] = $filename; } } } if (empty($theme_css_files)) { echo "✓ No theme-specific CSS files found\n"; } else { echo "✗ Found theme CSS files: " . implode(', ', $theme_css_files) . "\n"; } // Test 6: Check JS files echo "\nTest 6: Checking for theme-specific JS files...\n"; $js_dir = $plugin_dir . 'assets/js/'; $theme_js_files = []; if (is_dir($js_dir)) { $js_files = glob($js_dir . '*.js'); foreach ($js_files as $file) { $filename = basename($file); if (stripos($filename, 'astra') !== false || stripos($filename, 'ast-') !== false || stripos($filename, 'divi') !== false) { $theme_js_files[] = $filename; } } } if (empty($theme_js_files)) { echo "✓ No theme-specific JS files found\n"; } else { echo "✗ Found theme JS files: " . implode(', ', $theme_js_files) . "\n"; } // Summary echo "\n=========================================\n"; echo "THEME INDEPENDENCE TEST SUMMARY\n"; echo "=========================================\n"; $total_issues = count($found_constants) + count($theme_classes) + count($theme_hooks) + count($theme_css_files) + count($theme_js_files); if ($total_issues === 0) { echo "✓ PASSED: Plugin is theme-independent!\n"; echo "The HVAC plugin can work with any WordPress theme.\n"; } else { echo "✗ FAILED: Found $total_issues theme-specific issues\n"; echo "The plugin still has dependencies on specific themes.\n"; } echo "\n";