WordPressでタイトルと記事の文字数制限して表示や取り出す方法
WordPressサイトで記事のタイトルや本文を出力する場合に、文字数を制限する方法を解説します。
例えば、タイトルが長くて、レイアウトが崩れたりする場合に、予め文字数を制限しておけば、このような心配は不要になります。
また、本文の文章を全部表示させずに、一部だけ抜き出して表示させることもできます。
PHPを使用した方法ですが、この記事のコードをコピー&ペーストで簡単に設定できるので試してください。
タイトルの文字数を制限
タイトルの文字数を制限します。次のコードを使用します。
1 |
<?php echo mb_substr($post->post_title, 0, 20); ?> |
上記のコードでは、タイトルが20文字に制限します。必要に応じて文字数「20」を変更してください。
タイトルの後ろに省略記号「…」を表示する場合は、次のように記載します。
1 |
<?php echo mb_substr($post->post_title, 0, 20).'...'; ?> |
なお、上記のコードは全てのタイトルに「…」が表示されます。
タイトルが短くて省略していない場合でも「…」が付くため、省略していない場合に「…」を表示しないのではあれば、次のようにします。
1 2 |
<?php if(mb_strlen($post->post_title)>20) { $title= mb_substr($post->post_title,0,20) ; echo $title. ・・・ ; } else {echo $post->post_title;}?> |
タイトルにhtmlやphpのタグが含まれる場合は除去する必要があります。通常であれば、タイトルにタグが含まれることは稀ですが、除去する場合は以下のように記述します。
1 2 3 4 5 6 7 8 9 10 |
<?php // タイトルの文字数制限 $str = strip_tags(get_the_title()); // タイトルからHTMLやPHPタグを除去 $num = 20; // 20文字以上に指定 if(mb_strlen($str)>$num ) { // タイトルが20文字以上であれば実行 $str = mb_substr($str,0,$num); // タイトルの先頭から20文字を取り出し echo str_replace(array("\r\n","\n","\r"), '', $str).'...'; // 改行の削除、「...」を表示 } else { // 文字列が指定の文字数未満ならそのまま表示 echo str_replace(array("\r\n","\n","\r"), '', $str); // 改行の削除、20文字未満であれば「...」を非表示 } ?> |
本文の文字数を制限
本文の文字数を制限して表示したい場合は、以下のコードを使用します。
1 |
<?php echo mb_substr(strip_tags($post-> post_content),0,200) ; ?> |
本文から200文字取り出して表示します。「200」は自由に変更してください。
本文を省略したことを現わす「…」を表示する場合は、以下のように変更します。
1 |
<?php echo mb_substr(strip_tags($post-> post_content),0,200) . '...'; ?> |
「…」で、本文が抜粋されて省略されていることが分かりやすくなりました。
なお、本文が短くて省略していない場合でも「…」は表示されます。
例えば、設定を「200」にした場合に、200文字以上は「…」が表示されて、それ未満であれば表示しないなら以下のように記述します。
1 2 3 4 5 6 7 8 9 10 |
<?php // 本文の文字数制限 $post_content = strip_tags(get_the_content()); // 本文からHTMLやPHPタグを除去 if(mb_strlen($post_content)>200 ) { // 本文が200文字以上であれば実行 $post_content = mb_substr($post_content,0,200); // 本文の先頭から200文字を取り出し $post_content = str_replace(array("\r", "\n"), '', $post_content).・・・; // 改行の削除、「...」を表示 } else { $post_content = str_replace(array("\r", "\n"), '', $post_content); // 改行の削除、200文字未満であれば「...」を非表示 } echo $post_content; // 文字制限した本文の表示 ?> |
また、本文から取り出す位置を指定することも可能です。
例えば、本文の最後から200文字取り出す場合は、「-」記号を記入します。
1 |
<?php echo mb_substr(strip_tags($post-> post_content),-200,200) ; ?> |
PHP関数の解説
文字数を制限するのに使用するPHP関数を少し解説します。
mb_substr
「mb_substr」は日本語の文字数を指定して、取り出す関数です。
strip_tags
「strip_tags」は取り出す文字から、「HTML」や「PHP」を除去してくれます。
$post-> post_content
「$post-> post_content」は本文から取り出します。「post_ title」にするとタイトルから取り出す意味になります。
応用方法
本文から文字を取り出す場合に、更に細かく調整したい場合もあるはずです。
- 投稿記事にショートコードが含まれる場合は除去する。
- 投稿記事がパスワードで保護されている場合は抜き出さないようにする。
- WordPressの自動整形機能の関数「wpautop」により調整して出力します。
このような細かい部分も考慮するのであれば、以下のように変更します。
1 |
<?php echo mb_substr(strip_tags(apply_filters('the_content', $post->post_content)), 0, 200); ?> |
抜粋文の文字数を制限
トップページやカテゴリーなどの記事一覧に表示する抜粋文の文字数を制限します。
抜粋文は「<?php the_excerpt(); ?>
」を使用して表示します。
1 |
<?php echo mb_substr(get_the_excerpt(),0,100); ?> |
上記では抜粋文を100文字に制限しています。
抜粋文の後ろに「…」を表示する場合は、以下のように記述します。
1 |
<?php echo mb_substr(get_the_excerpt(),0,100) . '...'; ?> |
functionsから文字数を制御
functions.phpから抜粋文の文字数を制御することもできます。
次のコードをfunctions.phpに記述します。
1 2 3 4 5 6 7 8 9 10 11 |
//概要(抜粋)の文字数 function my_length($length) { return 100; } add_filter('excerpt_mblength','my_length'); //概要(抜粋)の省略記号 function my_more($more) { return '…'; } add_filter('excerpt_more', 'my_more'); |
上記では、抜粋文を100文字に制限して、最後に「…」を表示します。
次に、抜粋文を表示したい位置に次のコードを記述します。
1 |
<?php the_excerpt(); ?> |
WordPress専用の関数
WordPressには文字数を制限する専用の関数も存在します。
それが、「WP_trim_words」関数です。
先程紹介したPHP関数「mb_strlen」か「WordPress関数「WP_trim_words」のどちらを使用しても大丈夫です。
「WP_trim_words」は本文の先頭から指定された文字数を取り出します。
なお、この関数が正しく動作するためには、WordPressプラグインの「WP Multibyte Patch」をインストールして、有効化しておく必要があります。
タイトルの文字数制限
タイトルの文字数を制限する場合は、以下のように記述します。
1 |
<?php echo wp_trim_words( get_the_title(), 20, '...' ); ?> |
上記では文字数を20文字に制限して、最後に「…」表示させています。
本文の文字数制限
本文から200文字取り出す場合は以下のように記述します。
1 |
<?php echo wp_trim_words( get_the_content(), 200, '...' ); ?> |
上記では本文から200文字取り出して、最後に「…」を追加しています。「200」は必要に応じて変えてください。
ちなみに、「200」の部分を省略すると初期設定では「110」になり、自動的に110文字を取り出します。
まとめ
WordPressサイトで文字数を制限して取り出す方法をご紹介しました。
他の部分に抜き出して一部を表示したいときなどに役立ちます。地味な方法ですが、知っておくと便利です。
是非、機会があれば使ってみてください。
*記事を書くのに、次のサイトを参考にさせて頂きました。感謝いたします。