乌徒帮技术范儿WEB开发PHP › wordpress(php)识别手机访问自动跳转的案例

wordpress(php)识别手机访问自动跳转的案例

分类:PHP

以前经常会遇到使用手机访问和电脑访问进入不同页面的情况,例如3g.qq.com,discuz也逐渐有了这种功能。当然,很多系统是可以自己设置是否在手机访问时跳转的。但wordpress没有,虽然有几款手机访问插件,但总体欠佳。我们可以自己写手机访问界面程序,然后让手机访问时自动跳转,这样可以节约流量,还能使界面更自定义。但要如何实现手机浏览器访问时自动跳转呢?废话不多,直接上代码吧:

< ?php
//本段代码处理域名,可以实现手机访问的话就跳转到手机页面
$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';//判断地址后面部分,带主域名后面的"/"
$request_uri=substr($request_uri,1);//去掉那一"/"
if(preg_match('@^([0-9]+)@i',$request_uri,$matches)){
header('HTTP/1.1 301 Moved Permanently');//发出301头部
header('Location:'.bloginfo('url').'/?p='.$matches[1]);
exit();//解释一下,这一段是当初只能通过短连接访问本站时写的,如果没有必要,你完全可以自己修改或删除。
}//这里开始真正的手机判断
if(!preg_match('/(mozilla|m3gate|winwap|openwave|MSIE 8.0|MSIE 7.0|MSIE 6.0|Firefox|Chrome|Safari|Opera)/i', $_SERVER['HTTP_USER_AGENT']))//判断浏览器类型
{
header('HTTP/1.1 301 Moved Permanently');//发出301头部
header('Location: '.bloginfo('url').'/wap/index-wap2.php'.$request_uri);//跳转到我的新域名地址,这是因为本站安装了wp-t-wap插件,并采用了文章短连接的形式
exit();
}
?>

使用上面这段代码需要将固定连接修改为默认形式,将它放在你对应的主题的header.php的开头。当然,您也可以修改和写出你喜欢的网址形式的代码,我这里只是抛砖引玉一下。

第一个if语句实现的是:用户直接用文章ID可以直接跳转到文章,这样的好处是方便访客记忆网址,或直接告诉朋友文章ID号就可以被访问了。如我只 需要输入http://www.nunubi.com/1就可以直接跳转到http://www.nunubi.com/?p=1

第二个if语句实现的是跳转到手机访问页面,即浏览器不属于主流浏览器时,跳转到/wap/index-wap2.php页面,后缀就是?p=id 或者?cat=cid的形式,这样你应该明白为什么要采用第一种固定连接形式了吧。如上面的例子,我手机访问http://www.nunubi.com /1网址直接跳转为http://www.nunubi.com/wap/index-wap2.php?p=1


上面代码只适合以原短连接形式网址的网站。自定义固定连接后,由于无法直接获取ID,所以需要修改。修改如下:

if(is_single()){
if ( have_posts() ) : while ( have_posts() ) : the_post();
$post_id=$post->ID;
$perlink="?p=$post_id";
endwhile; else:
endif;
}
else if (is_category()) {
global $wp_query;
$cat_id = $wp_query->get_queried_object_id();
$perlink="?cat=$cat_id";
}else{
$perlink="";
}
if(!preg_match('/(mozilla|m3gate|winwap|openwave|MSIE 8.0|MSIE 7.0|MSIE 6.0|Firefox|Chrome|Safari|Opera)/i', $_SERVER['HTTP_USER_AGENT']))//判断浏览器类型
{
header('HTTP/1.1 301 Moved Permanently');//发出301头部
header('Location: '.get_bloginfo('url').'/wap/index-wap2.php'.$perlink);//跳转到我的新域名地址
exit();
}

这段代码判断了两种情况,一种是如果是文章页,就获取文章的ID,实现?p=ID,如果是分类页,就获取分类ID,实现?cat=ID,其他的就全部进入手机访问的首页界面。

文章写的有点乱,希望大家凑合看吧,稍加思考研究还是可以很快解决问题的。


更新:实现wordpress手机访问:基于wp-t-wap非插件 为wp-t-wap插件新增在线回复功能

<完>

填写个人信息,赶快回复吧!