WordPress.org

Make WordPress Core

Ticket #11216: 11216.2.diff

File 11216.2.diff, 3.2 KB (added by rzen, 11 years ago)

Extends nested page templates to child themes

  • wp-includes/theme.php

     
    352352                if ( $stylesheet_dir ) {
    353353                        while ( ($file = $stylesheet_dir->read()) !== false ) {
    354354                                if ( !preg_match('|^\.+$|', $file) ) {
    355                                         if ( preg_match('|\.css$|', $file) )
     355                                        if ( preg_match('|\.css$|', $file) ) {
    356356                                                $stylesheet_files[] = "$theme_root/$stylesheet/$file";
    357                                         elseif ( preg_match('|\.php$|', $file) )
     357                                        } elseif ( preg_match('|\.php$|', $file) ) {
    358358                                                $template_files[] = "$theme_root/$stylesheet/$file";
     359                                        } elseif ( is_dir("$theme_root/$stylesheet/$file") ) {
     360                                                $stylesheet_subdir = @ dir("$theme_root/$stylesheet/$file");
     361                                                if ( !$stylesheet_subdir )
     362                                                        continue;
     363                                                while ( ($subfile = $stylesheet_subdir->read()) !== false ) {
     364                                                        if ( preg_match('|^\.+$|', $subfile) )
     365                                                                continue;
     366                                                        if ( preg_match('|\.php$|', $subfile) ) {
     367                                                                $template_files[] = "$theme_root/$stylesheet/$file/$subfile";
     368                                                        }
     369                                                        elseif ( is_dir("$theme_root/$stylesheet/$file/$subfile") ) {
     370                                                                $stylesheet_subdir_subdir = @ dir("$theme_root/$stylesheet/$file/$subfile");
     371                                                                if ( !$stylesheet_subdir_subdir )
     372                                                                        continue;
     373                                                                while ( ($sub_subfile = $stylesheet_subdir_subdir->read()) !== false ) {
     374                                                                        if ( preg_match('|^\.+$|', $sub_subfile) )
     375                                                                                continue;
     376                                                                        if ( preg_match('|\.php$|', $sub_subfile) )
     377                                                                                $template_files[] = "$theme_root/$stylesheet/$file/$subfile/$sub_subfile";
     378                                                                }
     379                                                                @ $stylesheet_subdir_subdir->close();
     380                                                        }
     381                                                }
     382                                                @ $stylesheet_subdir->close();
     383                                        }
    359384                                }
    360385                        }
    361386                        @ $stylesheet_dir->close();
     
    375400                                        while ( ($subfile = $template_subdir->read()) !== false ) {
    376401                                                if ( preg_match('|^\.+$|', $subfile) )
    377402                                                        continue;
    378                                                 if ( preg_match('|\.php$|', $subfile) )
     403                                                if ( preg_match('|\.php$|', $subfile) ) {
    379404                                                        $template_files[] = "$template_directory/$file/$subfile";
     405                                                }
     406                                                elseif ( is_dir("$template_directory/$file/$subfile") ) {
     407                                                        $template_subdir_subdir = @ dir("$template_directory/$file/$subfile");
     408                                                        if ( !$template_subdir_subdir )
     409                                                                continue;
     410                                                        while ( ($sub_subfile = $template_subdir_subdir->read()) !== false ) {
     411                                                                if ( preg_match('|^\.+$|', $sub_subfile) )
     412                                                                        continue;
     413                                                                if ( preg_match('|\.php$|', $sub_subfile) )
     414                                                                        $template_files[] = "$template_directory/$file/$subfile/$sub_subfile";
     415                                                        }
     416                                                        @ $template_subdir_subdir->close();
     417                                                }
    380418                                        }
    381419                                        @ $template_subdir->close();
    382                                 }
     420                                } 
    383421                        }
    384422                        @ $template_dir->close();
    385423                }
  • 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 = '';