Wordpress、ユーザーエージェント判別してページをリダイレクト | 品川のウェブサービス会社で働く宴会部長のブログ
Wordpressサイトにて、
とある固定ページだけ
スマホでアクセスされたら別の固定ページに
リダイレクトさせたい、
という状況がありまして。


http://exsample.com/pageA/ という固定ページに
PCでアクセスしたらそのまま表示、
スマホでアクセスしたら
http://exsample.com/pageB/ へリダイレクトさせたい。


リダイレクト方法としては
・htaccess
・php
・js
とか考えたのですが、
functions.phpにユーザエージェント判別関数があるし
phpでやることにしました。


loop-page.php内でリダイレクトさせようとしたら
 PHP Warning: Cannot modify header information - headers already sent
が出てしまったので
header.php内でやることに。
時間勝負なところもあったので苦肉の策ではありましたが…

こんな感じ。
----------------------------------------------------
●header.php
(※isSmartPhoneは振り分けを行う独自関数。functions.phpに記載。)

if (!isSmartPhone()){
 //PCの処理
}else{
 //スマホの処理
 if ($_SERVER['REQUEST_URI'] == '/pageA'){
header("Location: http://exsample.com/pageB");
exit;
 }
 スマホの表示処理
 ~
 ~
 ~
}
----------------------------------------------------


=================================================================
●functions.php(9/27 added)


//---------------------------------------------------------------
// PC・スマホ振り分け(スマホ→TRUE,それ以外→FALSE)
//---------------------------------------------------------------
function isSmartPhone() {

$__ua=$_SERVER['HTTP_USER_AGENT'];

if(strpos($__ua,'iPhone')!==FALSE){
return TRUE;
}
elseif(strpos($__ua,'iPod')!==FALSE){
return TRUE;
}

elseif(
( strpos($__ua,'Android') !== FALSE )
&& ( strpos($__ua,'Mobile') !== FALSE )
&& ( strpos($__ua,'SC-01C') === FALSE )
&& ( strpos($__ua,'SMT-i9100') === FALSE ) ){
return TRUE;
}

else{
return FALSE;
}
}

add_filter('pre_get_posts','SearchFilter');


=================================================================