В принципе, базовые шаблоны лучше оставлять именно там, где они должны быть - в корне папки темы. Если ходите сделать организацию файлов "чище" - есть 2 варианта:
1. Использовать template_parts для уникальных частей шаблонов. Таким образом у вас будет в корне только single.php или singular.php, а уже в них можно динамически забирать post_type и в зависимости от его значения, подключать необходимый фрагмент:
get_template_part( 'my-templates-dir/single', get_post_type() ); // подключить my-theme/my-templates-dir/single-service.php, где 'service' - динамическая часть, возвращаемая функцией get_post_type()
2. Хукаться в дефолтную иерархию темплейтов и подменять пути:
function custom_template( $template ) {
if ( is_singular( 'service' ) ) {
return get_template_directory() . '/template/my-custom-template.php';
}
return $template;
}
add_filter( 'template_include', 'custom_template', 99 );