Почему бы просто не сделать CPT?
И далее просто делать проверку
is_singular( $cpt_slug );
А темплейт в single-portfolio.php.
Ваш вариант тоже возможен конечно, просто в темплейт иерархию WP он не вписывается. В резолве темплейта для singular страниц не используются таксаномии, так что внутри single.php вам придется проверять категории и вставлять нужные темплейты самостоятельно.
Проверки такие:
/* Возвращает true если у $post есть нужный $term */
<?php has_term( $term, $taxonomy, $post ); ?>
/* То же, но конкретно для таксаномии рубрик */
<?php has_category( $category, $post ); ?>
/* Возвращает true если это single поста */
<?php is_single( $post ); ?>