WordPressのタイトルと抜粋の文字数を制限する

WordPressのタイトルや抜粋文をデザインの関係で文字数を制限したいときは、テンプレートタグの「the_title」と「the_excerpt」をそのまま使うのではなく「フィルターフック」や「mb_strimwidth関数」で文字数を制限する必要があります。
文字数を制限する
文字数を制限する方法で、PHPのmb_strimwidth関数を使います。
この関数では5つの引数が指定できます。
引数 | 概要 |
---|---|
str | 丸めたい文字列。 |
start | 開始位置のオフセット。文字列の始めからの文字数 (最初の文字は 0) です。 |
width | 丸める幅。 |
trimmarker | 丸めた後にその文字列の最後に追加される文字列。 |
encoding | encoding パラメータには文字エンコーディングを指定します。省略した場合は、 内部文字エンコーディングを使用します。 |
タイトルの文字数を制限する
そのまま制限したタイトルを出力する場合
<?php echo mb_strimwidth(get_the_title(), 0, 40, "…", "UTF-8"); ?>
日本語(全角)の場合は1文字2バイト換算なので、20文字で制限したいなら40を指定します。 第四引数で指定している「”…”」は文字数が制限値に達した時に表示される文字列です。
制限したタイトルを変数に格納する場合
<?php $shortTitle = mb_strimwidth(get_the_title(), 0, 40, "…", "UTF-8"); ?>
出力したいところで<?php echo $shortTitle; ?>
フィルターフックを仕様する場合
functions.php
<?php add_filter('the_title', 'my_the_title', 10, 2); function my_the_title($title, $id) { $title = mb_strimwidth($title, 0, 40, "…","UTF-8"); return $title; } ?>
テンプレートタグの<?php the_title(); ?>を使用します。
抜粋の文字数を制限する
そのまま制限した抜粋文を出力する場合
<?php echo mb_strimwidth(get_the_excerpt(), 0, 140, "…", "UTF-8"); ?>
制限した抜粋文を変数に格納する場合
<?php $shortExcerpt = mb_strimwidth(get_the_excerpt(), 0, 140, "…", "UTF-8"); ?>
出力したいところで<?php echo $shortExcerpt; ?>
フィルターフックを仕様する場合
functions.php
<?php add_filter('the_excerpt', 'my_the_excerpt'); function my_the_excerpt($postContent) { $postContent = mb_strimwidth($postContent, 0, 140, "…","UTF-8"); return $postContent; } ?>
テンプレートタグの<?php the_excerpt(); ?>を使用します。
まとめ
自由に文字数を指定できれば、デザインの幅も広がりますね。
基本的な事ですが良く使うテクニックだと思います。