Set multiple templates per post

Yes it is. But no by default.

But it’s pretty easy to do it yourself.

You can do it in 2 ways:

1. In single.php template file

Just add if statement and use get_template_part function to load selected template.

So your single.php file could look like this:

<?php
if ( isset($_GET['template']) ) {
    switch ($_GET['template']) {
        case 'a':
            get_template_part('single-post-template-a');
            break;
        ...        
    }
} else {
    get_template_part('single-post-template-default');
}

2. Using single_template hook.

function get_custom_post_type_template($single_template) {
     global $post;

     if ($post->post_type == 'post' && isset($_GET['template']) ) {
          switch ( $_GET['template'] ) {
               case 'a':
                   return locate_template( array('/single-post-template-a.php') );
                   break;
               ...
          }
     }
     return $single_template;
}
add_filter( 'single_template', 'get_custom_post_type_template' );