The base code is very simple, adjust the page Slug and the theme name:
<?php
/**
* Plugin Name: (SOPT) Theme for page
*/
add_filter( 'template', 'change_theme_wpse_12931' );
add_filter( 'option_template', 'change_theme_wpse_12931' );
add_filter( 'option_stylesheet', 'change_theme_wpse_12931' );
function change_theme_wpse_12931( $template = '' )
{
if( is_page('test-page') )
$template = 'twentyten';
return $template;
}
Probably, you will need to make fine adjustments because they can give 404 errors for some features of the original theme and that WP will try to search in the alternative theme, on my local system is Twentyfourteen and gives this failure:
Failed to load Resource: the server responded with a status of 404 (Not Found) http://example.dev/wp-content/themes/twentyten/genericons/genericons.css
The code is this question in Wordpress Developers.
Or else, like comments on the utluiz, one can use a page template with custom header and footer, in this example the template will call the file header-test-page.php
:
<?php
/**
* Template Name: Virtual theme
*/
if( is_page('test-page') )
get_header('test-page');
else
get_header(); ?>
Thanks, man.
– morphinduction