WordPress.org

Make WordPress Core

Ticket #11216: 11216.diff

File 11216.diff, 1.8 KB (added by rzen, 4 years ago)
  • wp-includes/theme.php

     
    375375                                        while ( ($subfile = $template_subdir->read()) !== false ) { 
    376376                                                if ( preg_match('|^\.+$|', $subfile) ) 
    377377                                                        continue; 
    378                                                 if ( preg_match('|\.php$|', $subfile) ) 
     378                                                if ( preg_match('|\.php$|', $subfile) ) { 
    379379                                                        $template_files[] = "$template_directory/$file/$subfile"; 
     380                                                } 
     381                                                // Let's go a second level deep, for good measure (and to play nice with well-organized theme frameworks) 
     382                                                elseif ( is_dir("$template_directory/$file/$subfile") ) { 
     383                                                        $template_subdir_subdir = @ dir("$template_directory/$file/$subfile"); 
     384                                                        if ( !$template_subdir_subdir ) 
     385                                                                continue; 
     386                                                        while ( ($sub_subfile = $template_subdir_subdir->read()) !== false ) { 
     387                                                                if ( preg_match('|^\.+$|', $sub_subfile) ) 
     388                                                                        continue; 
     389                                                                if ( preg_match('|\.php$|', $sub_subfile) ) 
     390                                                                        $template_files[] = "$template_directory/$file/$subfile/$sub_subfile"; 
     391                                                        } 
     392                                                        @ $template_subdir_subdir->close(); 
     393                                                } 
    380394                                        } 
    381395                                        @ $template_subdir->close(); 
    382396                                } 
  • wp-admin/includes/theme.php

     
    175175                foreach ( $templates as $template ) { 
    176176                        $basename = str_replace($base, '', $template); 
    177177 
    178                         // don't allow template files in subdirectories 
    179                         if ( false !== strpos($basename, '/') ) 
    180                                 continue; 
    181  
    182178                        $template_data = implode( '', file( $template )); 
    183179 
    184180                        $name = ''; 
     
    190186                        } 
    191187                } 
    192188        } 
    193  
    194         return $page_templates; 
     189         
     190        return apply_filters( 'available_page_templates', $page_templates ); 
    195191} 
    196192 
    197193/**