コピペで簡単、the_excerpt()のカスタマイズとタブレット判定の関数

こんにちは、けーすけです。
今回は備忘録的に書き残しておきたいと思います。

WordPressの投稿をループで取得した際に、本文を抜粋表示するthe_excerpt関数のカスタマイズです。
今回は制限する文字数の変更と、モバイル表示の際にも文字数を変更する方法についてと、ついでにタブレット端末を判定する関数も載せておきます。

いつもあれどうだったっけ、、、と小さなことは忘れがちになってしまいます。。。( 小さいけど大切なこと )

the_excerpt()のカスタマイズ

ますは、文字数制限をするthe_excerpt()のカスタマイズ。if文と、wp_is_mobile()でモバイル表示の際には表示する文字数を変更しています。

// the_excerpt()のカスタマイズ
function new_excerpt_mblength($length) {
	// 制限する文字数
    return if( !wp_is_mobile() ) ? 99 : 40 ;
}
add_filter('excerpt_mblength', 'new_excerpt_mblength');
function new_excerpt_more($more) {
	// 文字数を超えた場合の末につける文字
     return '...';
}
add_filter('excerpt_more', 'new_excerpt_more');

とっても簡単ですね、、、とか思っているから忘れてしまうんでしょうか?

タブレット判定( ipadのみ )の関数

wp_is_mobile()という関数だとタブレットもモバイル判定になってしまいます。
なので、ipadのみを判定する関数を作ってタブレット時は別の動作をしてもらえるようにします。

こんな感じで

// ipad判定関数 
function is_ipad() {
	// ヘッダ情報にipadの文字列があればtrueを返す
	$is_ipad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPad');
    if ($is_ipad) {
        return true;
    } else {
        return false;
    }
}

とても簡単ですね、しかしこのままではipadのみ判定できる状態です。あまり意味がない、、、
ということで$_SERVERを変数に代入して、他のデバイスもstrposで判定してみてください。

apple製品は製品名がユーザーエージェントに入っていますが、Androidのスマホとタブレットではmobileが入っているかどうかを判定するとうまくいきます。

まとめ

久しぶりのまとも?な記事でした!タブレットの判定については来週あたりにちゃんと書き直したいと思います。

短いですが、この辺で。また次回の記事でお会いしましょう、けーすけでした。

参考記事:テンプレートタグ/the excerpt – WordPress Codex 日本語版