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');
=================================================================