WordPress.org

Make WordPress Core

Ticket #11216: 11216.diff

File 11216.diff, 1.8 KB (added by rzen, 11 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/**