The activated theme is stored in the options
table: template
is the parent theme, stylesheet
is the child theme. If there is no child theme the two values will be the same.
The current hostname (URL without protocol or path) is available in the $_SERVER
variable.
You can then hook into the stylesheet
and template
filters to force a different theme.
function use_mobile_theme( $current_theme ) {
// If the domain is m.qqq.com and the current theme is 'qqq'
if ( 'm.qqq.com' === $_SERVER['HTTP_HOST'] && 'qqq' === $current_theme ) {
// Use the 'qqq-mobile' theme instead
return 'qqq-mobile';
} else {
// Otherwise, keep the current theme
return $current_theme;
}
}
add_filter( 'stylesheet', 'use_mobile_theme' );
add_filter( 'template', 'use_mobile_theme' );
If qqq-mobile
is a child theme, remove the add_filter( 'template', ...
line.