WordPressで企業サイトを構築する場合、「トップページにタイトルと記事本文を30文字で表示制限をかけて出力する」などの処理を施すことが多いのですが、忘れがちなので備忘録も兼ねてまとめました。
他にも「ブログのサイドメニューに記事のタイトルだけを20文字で表示制限をかけて出力する」のような処理の場合でも使えるカスタマイズです。
今回はthe_title()でタイトルを出力する場合、またthe_content()やthe_excerpt()で記事本文や抜粋を出力する場合、さらにカスタムフィールドのtextareaに入力した内容を情報を出力する場合で、それぞれ具体的な制御方法をまとめて紹介させていただきます。
(1)テーマファイル側でタイトルの文字数を制限する
まずはthe_title() で出力されたタイトルを、functions.phpを触らずにテーマファイル側で完結させる方法です。任意の文字数(以下の例だと30文字)で表示制限して、以後を…で省略します。
1 2 3 4 |
<?php if (strlen($post->post_title) > 30) { echo mb_substr(the_title($before = '', $after = '', FALSE), 0, 30) . '…'; } else { the_title(); } ?> |
参考ページ
テーマファイル側で、記事タイトルの文字数を制限する
(2)functions.php をカスタマイズして、タイトルの文字数を制限する
今度はfunctuons.phpをカスタマイズして、the_title()で出力されたタイトルの文字数を制限する方法です。
1 2 3 4 5 6 7 8 9 |
<?php function titlelimitchar($title){ if(mb_strlen($title) > 30 && !(is_single()) && !(is_page())){ $title = mb_substr($title,0,30) . "…"; } return $title; } add_filter( 'the_title', 'titlelimitchar' ); ?> |
参考ページ
WordPressのタイトルの文字数を制限する
(3)the_content() の出力内容の文字数を制限する
the_content()で出力された記事本文の文字数を制限する方法です。
1 |
<?php echo mb_substr(strip_tags($post-> post_content),0,30) . '…'; ?> |
(4)the_excerpt() の出力内容の文字数を制限する
the_excerpt()で出力された記事抜粋の文字数を制限する方法です。
1 |
<?php echo mb_substr(get_the_excerpt(), 0, 30) . '…'; ?> |
(5)カスタムフィールドのtextarea の出力内容の文字数を制限する
Custom Field Templateなどのカスタムフィールド拡張プラグインを利用する場合に、カスタムフィールドのtextareaに入力した文字数を制限する方法です。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $pattern = '/(^.{30})(.+)/u'; $subject = post_custom('textarea'); $matches = array(); preg_match($pattern, $subject , $matches); if ($matches[2] != '') { $out = $matches[1] . '…'; } else { $out = $subject; } echo($out); ?> |
参考ページ
WordPressのカスタムフィールドで最初のn文字だけを表示して、残りを…にする方法は?
(6)Types を利用したカスタムフィールドのtextareaの出力内容の文字数を制限する
Typesのプラグイン利用してカスタムフィールドのtextarea に入力した文字数を制限する方法です。
1 |
<?php echo mb_strimwidth(post_custom('wpcf-○○○○'), 0, 30 , '…', utf8); ?> |
「wpcf-○○○○」の部分には、filedスラグを入力します。
コメント