I’d use responsive design rather than a mobile subdomain copy of the site, however if you really do want this, then put this code in a plugin:
// this function doesn't exist prior to wordpress v3.4
if(!function_exists('wp_is_mobile')){
/**
* Test if the current browser runs on a mobile device (smart phone, tablet, etc.)
*
* @return bool true|false
*/
function wp_is_mobile() {
static $is_mobile;
if ( isset($is_mobile) )
return $is_mobile;
if ( empty($_SERVER['HTTP_USER_AGENT']) ) {
$is_mobile = false;
} elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false // many mobile devices (all iPhone, iPad, etc.)
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false ) {
$is_mobile = true;
} else {
$is_mobile = false;
}
return $is_mobile;
}
}
add_action('init','mobile_redirect_init');
function mobile_redirect_init(){
if(wp_is_mobile()){
$url="http://m.".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];;
wp_redirect($url);
}
}