Você pode usar template_redirect
hook para redirecionar para um tipo de postagem personalizado, você pode usar qualquer outro URL que desejar no lugar de home_url()
e o código de erro em outro argumento.
<?php
add_action( 'template_redirect', 'wpse_128636_redirect_post' );
function wpse_128636_redirect_post() {
$queried_post_type = get_query_var('post_type');
if ( is_single() && 'sample_post_type' == $queried_post_type ) {
wp_redirect( home_url(), 301 );
exit;
}
}
?>
Atualizado:
Uma abordagem alternativa seria definir 'publicly_queryable' => false
ao registrar a postagem personalizada, conforme mencionado anteriormente pelo @gustavo. Mas isso só vai te dar 404 diretamente, ele iria esconder único, bem como arquivar, basicamente completamente escondido do front-end e pode ser definido apenas para posts personalizados.