こんにちは
試していませんが、
WordPressには、ブラウザ検出用のグローバル変数が用意されています
http://codex.wordpress.org/Global_Variables
ので、これで条件を分岐して
PHPの header関数
http://php.net/manual/ja/function.header.php
で処理できるような気がします
sayoko matuさん、nobitaさん、こんにちは。
WordPressのグローバル変数を利用だと、ブラウザがsafariでmobileという文字列がユーザーエージェントに含まれているという簡単な条件なので、WPtouchの判別とは差がでてしまいます。
WPtouchが有効化されていれば、bnc_is_iphoneという関数が使えるので、これを利用した方が正確性が増します。
header関数でも問題ありませんが、wp_redirect関数を憶えておくといいですね。
実装方法ですが、
- 管理画面ではない
- bnc_is_iphone関数がある
- bnc_is_iphoneの結果がfalseである
という条件が成立する場合にPCサイトへのリダイレクトが行われるようにすれば大丈夫かと思います。
nobita様、jim912様
お忙しいところ、素早い回答ありがとうございます!
今回は、jim912様の方法をまず試してみますが、nobita様のおっしゃられた関数も知識として知っておいたほうが良いと思うので、あとで見てみます!
本当にありがとうございます!
(うまく行かなかったらまたアドバイスいただくかもしれませんが・・・)
こんにちは
jim912さん 正しい方法を教えていただき、ありがとうございます
sayoko matuさん jim912さんのご指摘が明らかに正しいので、おすすめします
jim912様
先程はありがとうございました。
度々申し訳ありません。
ちょっと考えてやってみたのですが、まだうまく行っておりません。
質問が2つあります。
1 記述先はPC用のテーマのヘッダーなどでよいでしょうか。
2 記述するコードはこんな感じかなと思って考えたのですが、エラーが出てPCでサイトが見れなくなってしまうので、違うようです。
3つの条件のうち !is_admin() || !function_exists(bnc_is_iphone()) だけで設定してもエラーが出ますので2番目の条件の記述がまずは問題なのかと思っています。単純に
bnc_is_iphone() と記述した場合もエラーがでました。
if ( !is_admin() || !function_exists(bnc_is_iphone()) || bnc_is_iphone==false ) {
wp_redirect( ( ‘リダイレクト先のURL’, 301 ); exit;
}
お手すきのときにもう一度アドバイスいただければ有難く存じます。
sayoko matuさん
1.
テーマのヘッダーの最初に書いても動くと思いますが、それまでには必要のない処理がたくさん行われてしまいます。functions.phpに書いて、initフックなどで実行させた方が良いです。
2.
・function_existsのパラメーターは関数名なので、()をつけずにシングルクォートで囲って下さい。
・逆に次の条件は、関数の結果で判別するため、()が必要です。
・各条件を||で繋ぐとorとなるため、この場合だと管理画面などでもリダイレクトされてしまいます。全ての条件を満たす場合にリダイレクトすればよいので、&&で結合してください。
また、ステータスコードは303の方が適切かもしれません。
jim912様
お忙しいところ、本当にありがとうございます。
まだ成功しておりませんが、知識不足なので調べながらもう少し頑張ってみます。
できてもできなくても、また結果をこちらに報告させていただきます。
本当にありがとうございます。