WordPressの投稿や固定ページ内で携帯・スマホ・パソコン単位で違うものを見せる方法を調べたのでメモっておく。

最初に考えたのが

「端末別のテーマがあるんだから現在WordPressで使用されているテーマがわかればいいのでは??」

だった。
WordPressには

1
bloginfo('template_directory');

という便利な人がいる
読んで字のごとく

「テンプレートのディレクトリを良い感じに教えてちょんまげ」

という人だ。
しかしこの人。
なぜか正規表現が通らなかった。

「もし今のテーマがスマホ用ならスマホ用文字を表示してね。
もし今のテーマが携帯用なら携帯用文字を表示してね。
もし今のテーマがパソコン用ならパソコン用文字を表示してね。」

としたいのにechoするとテーマのディレクトリが表示されるが正規表現ではこの変数はnullですと返された。
(公式サイトでもデザインをテーマって呼んでいるのにパラメータはテンプレートディレクトリっていう名前はどうよって思う)

もうちょっと調べればよかった気もするがわたしは30秒以上悩むのが嫌いなので別方針を考えた。


思いついたのがユーザエージェント。
テーマ表示より前にどの端末でアクセスしたか見ればテーマがリネームされた時でも
良い感じで表示してくれるのでは?と考えた。

んで考えたのがこんなソース

1
2
3
4
5
6
7
8
9
<?php
$ua=$_SERVER['HTTP_USER_AGENT'];
if((strpos($ua,'iPhone')!==false)||(strpos($ua,'iPod')!==false)||(strpos($ua,'Android')!==false)){ ?>
スマホですね<br>
<?php }elseif(ereg("^J-PHONE|^Vodafone|^SoftBank|^DoCoMo|^UP.Browser|^KDDI", $ua)){ ?>
携帯ですね<br>
<?php }else{ ?>
PCですね<br>
<?php } ?>

これで本文に記入して3端末ごとにフラグを立てて表示したい文字を出せば良い。
もっと賢いやり方があったらどなたか教えてくださいー