Перенос иерархии шаблона в подпапку
По умолчанию все файлы шаблона, например page.php лежат корневой папке темы. Иногда удобнее, чтобы все такие файлы лежали в отдельной папке, например templates. Код ниже показывает как расширить иерархию файлов темы.
Код ниже не затрагивает подключаемые файлы (не относящиеся напрямую к шаблону): header.php, footer.php, functions.php и т.д.
Также не затрагивается файл index.php.
// добавляет папку 'templates' для поиска шаблонов в иерархию файлов темы foreach( [ /*'index',*/'frontpage', 'home', '404', 'archive', 'author', 'category', 'tag', 'taxonomy', 'date', 'page', 'paged', 'search', 'single', 'singular', 'attachment' ] as $type ){ add_filter( $type .'_template_hierarchy', function( $templates ) use ( $type ){ $prefix = 'templates'; // страницы могут находится в папках if( 'page' === $type ){ global $post; array_unshift( $templates, "$prefix/page-$post->post_name/main.php" ); } // добавим всем префикс `templates/` foreach( $templates as & $relpath ){ if( "$prefix/" !== substr($relpath, 0, 10) ) $relpath = "$prefix/$relpath"; } return $templates; }, 20 ); }