Вы можете использовать single_template
фильтр и {$type}_template
фильтр для архива, категория et c.
Я думаю, что-то вроде этого - то, что вы ищете:
function get_new_single_template( $single_template ) {
global $post;
$single_template = get_stylesheet_directory() . '/pages/single.php';
return $single_template;
}
add_filter( 'single_template', 'get_new_single_template' );
function get_new_archive_template( $archive_template ) {
global $post;
$archive_template = get_stylesheet_directory() . '/pages/archive.php';
return $archive_template;
}
add_filter( 'archive_template', 'get_new_archive_template' );
Это идет к вашему functions.php