WordPress无插件快速实现绑定手机域名、自动跳转、禁用百度转码!

逍遥乐最近对我的博客网站进行了大范围的改造实现了全面的用户前端化,在这些都完成了以后,我转向了手机页面的支持上面!苦苦寻找终于找到了一个理想的教程,分享给大家!如果手机页面被缓存之后hyper-cache会跳过插件的部分直接执行缓存,所以要在hyper-cache之前来执行,可以把它放到wp-config.php中去,复制到define('ABSPATH', dirname(__FILE__) . '/');与require_once(ABSPATH . 'wp-settings.php');之间的位置就可以了。

缓存插件识别会比较混乱,所以需要在m.xiumu.org生效的时候禁用hyper-cache,编辑hyper-cache/cache.php文件,在头部加入

if (defined('MOBILE_THEME')) return hyper_cache_exit();

WordPress无插件快速实现绑定手机域名、自动跳转、禁用百度转码!

当访客访问www.luoxiao123.cn时,会判断浏览器是否为手机,来跳转到m.luoxiao123.cn,而当访客访问m.luoxiao123.cn的时候,会为它指定一个模板目录显示与www不同的界面。

与此同时当来路是蜘蛛的时候,网页会跳转到自有手机页面,设置好后,大家还可以到百度移动开放平台测试一下,如果提示网站暂时无法访问,请选择"重新加载"或进入"原网页",那就说明可以成功跳转了。

这个暂时没有在调试过程中发现其他问题。

大家在使用的时候,直接复制下面的代码,替换域名即可!

以下是主要代码部分

/*根据浏览器跳转*/
define ('MOBILE_DOMAIN', 'm.luoxiao123.cn');
define ('REAL_DOMAIN', 'www.luoxiao123.cn');
 
if ($_SERVER['SERVER_NAME'] == MOBILE_DOMAIN) {
	define('WP_HOME' ,'http://' . MOBILE_DOMAIN);
	define('WP_SITEURL',WP_HOME);
	define('TEMPLATEPATH', ABSPATH .'wp-content/themes/Ripple_mobile/');
	define('STYLESHEETPATH', ABSPATH .'wp-content/themes/Ripple_mobile/');
 
	define ('MOBILE_THEME', true);
}elseif(strpos($_SERVER['HTTP_USER_AGENT'],'baidu Transcoder')){ //百度转码跳转
	header('Location: '. 'http://' . MOBILE_DOMAIN . $_SERVER["REQUEST_URI"]);
	die();
}else{
 
	if (!empty($_GET['m_action'])) {
		if ($_GET['m_action'] == 'nomobile') {
			setcookie('wordpress_mobile_domain_disable', 1, time()+86400, '/', REAL_DOMAIN, false);
			if (!empty($_SERVER['HTTP_REFERER'])) {
				$go = str_replace(MOBILE_DOMAIN, REAL_DOMAIN, $_SERVER['HTTP_REFERER']);
				header ('location:'.$go);
				die();
			} else {
				header ('location:'.REAL_DOMAIN);
				die();
			}
		}
	}
	$browsers = array (
			'Googlebot-Mobile',
			'Opera Mini',
			'iPhone',
			'BlackBerry',
			'iPod',
			'Android',
			'Bolt',
			'IEMobile',
			'GoBrowser',
			'Skyfire',
			'TeaShark',
			'UC Browser',
			'UCWEB',
			'Opera Mobi',
			'Mobile Safari',
			'SEMC-Browser',
			'Teleca',
			'Series60',
			'Doris',
			'2.0 MMP',
			'240x320',
			'400X240',
			'AvantGo',
			'Blazer',
			'Cellphone',
			'Danger',
			'DoCoMo',
			'Elaine 3.0',
			'EudoraWeb',
			'hiptop',
			'KYOCERA WX310K',
			'LG U990',
			'MIDP-2.',
			'MMEF20',
			'MOT-V',
			'NetFront',
			'Newt',
			'Nintendo Wii',
			'Nitro',
			'Nokia',
			'Palm',
			'PlayStation Portable',
			'ProxiNet',
			'SHARP-TQ-GX10',
			'SHG-i900',
			'Small',
			'SonyEricsson',
			'Fennec',
			'TS21i-10',
			'UP.Browser',
			'UP.Link',
			'Windows CE',
			'WinWAP',
			'LG-TU915 Obigo',
			'LGE VX',
			'Iris',
			'Maemo Browser',
			'MIB',
			'Kindle Basic Web',
			'Myriad Browser',
			'Obigo Browser',
			'Polaris Browser',
			'uZardWeb',
			'WebOS',
			'Deepfish',
			'Dolphin',
			'Firefox Mobile',
			'ibisBrowser',
			'JOCA',
			'Links',
			'Minimo',
			'Pixo',
			'Skweezer',
			'Steel',
			'Tristit',
			'Vision Mobile Browser',
			'Dorothy',
			'Ovi Browser'
		);
	foreach($browsers as $browser) { 
		if (preg_match("/".$browser."/i", $_SERVER['HTTP_USER_AGENT'])) {
			if (!isset($_COOKIE['wordpress_mobile_domain_disable'])) {
				header ('location:http://' . MOBILE_DOMAIN . $_SERVER['REQUEST_URI']);
				die();
			}
		}
	}
}