Doesn’t exist any is_post_type_single
function, because there is no need for it.
is_singular()
fit perfectly your purpose.
Example code using 'template_include'
filter:
add_filter( 'template_include', function( $template ) {
if ( is_singular( array( 'cpt-1', 'cpt-2', 'cpt-3' ) ) ) {
$locate = locate_template( 'custom-template.php', false, false );
if ( ! empty( $locate ) ) {
$template = $locate;
}
}
return $template;
});
Of course change the name of your CPTs and the name of your custom template.
Please note that you haven’t to use the full path of template, just its name, but the file need to be in child theme or parent theme folder.