記事最終更新日:2017年08月20日
記事投稿日:2017年05月11日
閲覧数:3262 views
WordPressで文字数の制限をする方法メモ -【WordPress&PHP】
![](https://dev-memo.sk-archive.space/wp-content/uploads/2016/10/php-675x380.jpg)
はじめに
今回のD.M.C.【デベメモドットコム】の記事は「WordPressで文字数の制限をする方法メモ」という事で、WordPressの記事タイトルやコンテンツ、抜粋文の文字数を制限したいときは、よくあると思います。そういう時は、それぞれの「フィルターフック」等で文字数を制限する方法が一般的ですが、今回はもう少し汎用性のある方法を紹介したいと思います。
一つはWordPress専用のフォーマット関数wp_trim_wordsを使用する方法です。そして二つ目はPHPの関数を使用して文字数制限する方法で、こちらはWordPress以外でも使用できる制限方法です。
どちらもちょっとしたテクニックですがよく使うので出来るだけ詳しくメモ(解説)していきたいと思います。
wp_trim_words関数で文字数制限
まず一つ目のwp_trim_words関数は便利なのにもかかわらず、あまり使っている人を見た事がないので是非使い方を知っていただきたいです。
この関数はまず第一引数で制限をかけたい文字列を指定して、第二引数で何文字で制限をかけたいのかを、数値で指定します。
第二引数に関しては少し注意点がありデフォルトでは55文字になっていますがプラグイン「WP Multibyte Patch」を有効にしている場合はデフォルテャ110文字になっています。基本的には「WP Multibyte Patch」を有効にする事を推奨します。
そして第三引数は省略時の最後の文字を指定します、デフォルトはnullになっています。
もう一つ注意点としてはWordPressのバージョンは3.3以上です。
<?php $trimmed = wp_trim_words( $text, $num_words = 55, $more = null ); ?>
例としては下記のような使い方をします。
<?php echo wp_trim_words(get_the_title(), 30, '...'); ?>
またWordPressで使用する場面としてはループ中の記事タイトルや記事コンテンツに制限をかける事が多いと思いますが、この際はthe_title()ではなくget_the_title()で出力ではなく、取得の関数で指定してください。
この関数であればそれぞれの「フィルターフック」をいちいちカスタマイズしなくても、取得関数を変えるだけで文字数制限ができるので覚える事も少なくてもいいですし、書く量も少なくていいし、なにより便利ですよね!
PHP標準の関数で文字数制限
二つ目の方法はPHP標準の関数、mb_strimwidth関数とstrip_tags関数を使用する方法です。
この方法はそもそもWordPressでラップされたPHPじゃなく標準のPHPなのでWordPress環境以外でも使用できるので覚えておくといいと思います。
下記はまず文字数制限をしたい変数stringをstrip_tags関数でhtml等のタグを除去してその返り値をmb_strimwidth関数の第一引数に渡しています。そしてmbstrimwidth関数の第二引数には開始位置を指定しています。下記は0にしています。
そして第三引数にはバイト数を指定します。第四引数は制限をかけた文字列の最後の文字の指定、第四引数は文字エンコーディングを指定します。基本的に日本語環境ならUTF-8にしておくといいと思います。
<?php echo mb_strimwidth(strip_tags($string), 0, 60, '...', 'UTF-8'); ?>
注意点としては日本語はマルチバイトなので1文字2バイト、半角英数字は1バイトです。
ただちょっと長くて毎回書くのがめんどくさい場合は関数でまとめてしまえばいいと思います。
下記はchar_rest関数を定義して呼び出している例です。
<?php
function char_rest($string, $start = 0, $end = 100, $ext = '…') {
return mb_strimwidth(strip_tags($string), $start, $end, $ext, 'UTF-8');
}
$string = 'こんにちは!!このテキストの文字数を制限します。';
echo char_rest($string, 0, 30, '...');
?>
感想
今回のように自由に文字数を指定できれば、デザインの幅も広がりますし、使用頻度も結構あると思うので今回の記事で紹介出来てよかったと思います。
では最後まで見ていただき、ありがとうございました。
About / ブログについて
![D.M.C. / デベメモドットコム](https://dev-memo.sk-archive.space/wp-content/themes/routine/images/logo01.png)
D.M.C.【デベメモドットコム】はWEB制作に関することを中心に、
その他、関連する事まで出来るだけわかりやすく備忘録としてメモを残していくブログです。
このブログを通して少しでも為になる情報を発信して皆さんと共有できればとても嬉しいです。