WordPress.org

Make WordPress Core

Ticket #4131: 4131.diff

File 4131.diff, 2.4 KB (added by DD32, 6 years ago)
  • wp-admin/includes/theme.php

     
    4242                        $description = $description[1]; 
    4343 
    4444                        if ( !empty( $name ) ) { 
    45                                 $page_templates[trim( $name )] = basename( $template ); 
     45                                $page_templates[trim( $name )] = theme_basename( $template ); 
    4646                        } 
    4747                } 
    4848        } 
  • wp-includes/theme.php

     
    239238                                        $stylesheet_files[] = "$theme_loc/$stylesheet/$file"; 
    240239                        } 
    241240                } 
     241                @ $stylesheet_dir->close(); 
    242242 
    243243                $template_files = array(); 
    244244                $template_dir = @ dir("$theme_root/$template"); 
    245245                if ( $template_dir ) { 
    246246                        while(($file = $template_dir->read()) !== false) { 
    247                                 if ( !preg_match('|^\.+$|', $file) && preg_match('|\.php$|', $file) ) 
     247                                if( preg_match('|^\.+$|', $file) ) 
     248                                        continue; 
     249                                if ( preg_match('|\.php$|', $file) ) { 
    248250                                        $template_files[] = "$theme_loc/$template/$file"; 
     251                                } elseif ( is_dir("$theme_root/$template/$file") ){ 
     252                                        $template_subdir = @ dir("$theme_root/$template/$file"); 
     253                                        while(($subfile = $template_subdir->read()) !== false) { 
     254                                                if( preg_match('|^\.+$|', $file) ) 
     255                                                        continue; 
     256                                                if ( preg_match('|\.php$|', $subfile) ) 
     257                                                        $template_files[] = "$theme_loc/$template/$file/$subfile"; 
     258                                        } 
     259                                        @ $template_subdir->close(); 
     260                                } 
    249261                        } 
    250262                } 
    251  
     263                @ $template_dir->close(); 
     264                         
    252265                $template_dir = dirname($template_files[0]); 
    253266                $stylesheet_dir = dirname($stylesheet_files[0]); 
    254267 
     
    563575        add_action('admin_menu', array(&$GLOBALS['custom_image_header'], 'init')); 
    564576} 
    565577 
     578/** 
     579 * theme_basename() - Gets the basename of a theme. 
     580 * 
     581 * This method extracts the filename of a theme file from a path 
     582 * 
     583 * @package WordPress 
     584 * @subpackage Plugin 
     585 * @since 2.4 
     586 * 
     587 * @access private 
     588 * 
     589 * @param string $file The filename of a theme file 
     590 * @return string The filename relitive to the themes folder 
     591 */ 
     592function theme_basename($file) { 
     593        $file = str_replace('\\','/',$file); // sanitize for Win32 installs 
     594        $file = preg_replace('|/+|','/', $file); // remove any duplicate slash 
     595        $file = preg_replace('|^.*/themes/.*?/|','',$file); // get relative path from theme dir 
     596        return $file; 
     597} 
     598 
    566599?>