スクリーンショット(2013-06-13 18.01.08)

WordPressのfunctions.phpでショートコードを設定。ブラウザのユーザーエージェントで記事内容をPC、スマホでかき分ける方法を紹介します。

まずfunctions.phpに使っているブラウザのユーザーエージェントから、スマートフォン(またはiPadなどのタブレット)かどうかを判定する関数を記述。

function is_smartphone()
{
    #ユーザエージェント
    $user_agent = $_SERVER["HTTP_USER_AGENT"];  
    
     #sp user_agent
     $sp_useragents = array(
      'iPhone',         // Apple iPhone
      'Android',        // 1.5+ Android
    );
    $pattern = '/'.implode('|', $sp_useragents).'/i';
      
     if( preg_match($pattern, $user_agent ) )
     {
          return true;
     }
     else
     {
          return false;
     }
}

この場合、ユーザーエージェントにiPhoneやAndroidが含まれていれば true を返します。

次に同じく functions.phpに、ショートコード isSPを設定します。

function isSP_Trace($atts, $content=null)
{
     if(is_smartphone()) return $content;
}
add_shortcode('isSP', 'isSP_Trace');

ショートコード[isSP][/isSP]で囲った部分が 引数 $contentに渡され、 
上記のis_smartphone でtrue なら出力されます。

[isSP]ここにスマホ用HTMLなど[/isSP]

逆にスマホ以外(≒PCのみ)に表示させたい場合は判定を逆にする関数とショートコードを設定すればよいわけです。


//shortcode
function isPC_Trace($atts, $content=null)
{
     if(!is_smartphone()) return $content;
}
add_shortcode('isPC', 'isPC_Trace');

この場合[isPC][/isPC]で囲った箇所がスマホ以外で出力されます。

〜〜〜
記事中にphpの記述を可能にするプラグインを利用し、
記事中で直接スマホ判定関数を使ったやり方もありますが、
ショートコードを使ったほうがより簡単で安全性も高いのではないかと思います。

WordPressって便利だなー。