- Removed overly broad rewrite rules that were catching all trainer/* URLs - Now only adds specific rewrite rules for non-page routes (like event/manage) - Allows WordPress to handle actual page URLs naturally - Created mu-plugin to fix routing for existing installations This fixes the issue where pages were showing blog layout instead of content. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			97 lines
		
	
	
		
			No EOL
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			No EOL
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| echo "=== Disabling Conflicting Rewrite Rules ==="
 | |
| 
 | |
| # SSH into staging and comment out the problematic rules
 | |
| ssh roodev@146.190.76.204 << 'EOF'
 | |
| cd /home/974670.cloudwaysapps.com/uberrxmprk/public_html
 | |
| 
 | |
| # Create a temporary fix by removing the conflicting rewrite rules
 | |
| wp eval '
 | |
| // Remove the trainer route rules that conflict with actual pages
 | |
| remove_action("init", array(HVAC_Route_Manager::instance(), "register_rewrite_rules"), 5);
 | |
| 
 | |
| // Flush rewrite rules to clear them
 | |
| flush_rewrite_rules();
 | |
| '
 | |
| 
 | |
| # Now let's create a more targeted approach
 | |
| echo "Creating targeted rewrite fix..."
 | |
| 
 | |
| # Create a mu-plugin to handle this properly
 | |
| mkdir -p wp-content/mu-plugins
 | |
| 
 | |
| cat > wp-content/mu-plugins/hvac-fix-page-routing.php << 'PHP'
 | |
| <?php
 | |
| /**
 | |
|  * Fix HVAC page routing conflicts
 | |
|  * 
 | |
|  * This ensures actual WordPress pages load instead of being caught by rewrite rules
 | |
|  */
 | |
| 
 | |
| // Remove conflicting rewrite rules on init
 | |
| add_action('init', function() {
 | |
|     global $wp_rewrite;
 | |
|     
 | |
|     // Get current rules
 | |
|     $rules = $wp_rewrite->rules;
 | |
|     
 | |
|     // Remove rules that conflict with actual pages
 | |
|     $conflicting_patterns = array(
 | |
|         'trainer/([^/]+)/?$',
 | |
|         'master-trainer/([^/]+)/?$',
 | |
|     );
 | |
|     
 | |
|     foreach ($conflicting_patterns as $pattern) {
 | |
|         if (isset($rules[$pattern])) {
 | |
|             unset($rules[$pattern]);
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     $wp_rewrite->rules = $rules;
 | |
| }, 999);
 | |
| 
 | |
| // Ensure pages load with their templates
 | |
| add_filter('template_include', function($template) {
 | |
|     global $wp_query;
 | |
|     
 | |
|     if (is_404()) {
 | |
|         // Check if this should be a page
 | |
|         $path = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
 | |
|         $page = get_page_by_path($path);
 | |
|         
 | |
|         if ($page && $page->post_status === 'publish') {
 | |
|             // Force WordPress to recognize this as a page
 | |
|             $wp_query->is_404 = false;
 | |
|             $wp_query->is_page = true;
 | |
|             $wp_query->is_singular = true;
 | |
|             $wp_query->queried_object = $page;
 | |
|             $wp_query->queried_object_id = $page->ID;
 | |
|             
 | |
|             // Set up post data
 | |
|             setup_postdata($page);
 | |
|             
 | |
|             // Get the correct template
 | |
|             $page_template = get_page_template_slug($page->ID);
 | |
|             if ($page_template) {
 | |
|                 $located = locate_template(array($page_template));
 | |
|                 if ($located) {
 | |
|                     return $located;
 | |
|                 }
 | |
|             }
 | |
|             
 | |
|             // Fall back to page.php
 | |
|             return get_page_template();
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     return $template;
 | |
| }, 5);
 | |
| PHP
 | |
| 
 | |
| # Flush everything
 | |
| wp rewrite flush
 | |
| wp cache flush
 | |
| 
 | |
| echo "Routing fix applied!"
 | |
| EOF |