WordPressでタイトルと記事の文字数制限して表示や取り出す方法
WordPressサイトで記事のタイトルや本文を出力する場合に、文字数を制限する方法を解説します。
例えば、タイトルが長くて、レイアウトが崩れたりする場合に、予め文字数を制限しておけば、このような心配は不要になります。
また、本文の文章を全部表示させずに、一部だけ抜き出して表示させることもできます。
PHPを使用した方法ですが、この記事のコードをコピー&ペーストで簡単に設定できるので試してください。
タイトルの文字数を制限
タイトルの文字数を制限します。次のコードを使用します。
<?php echo mb_substr($post->post_title, 0, 20); ?>
上記のコードでは、タイトルが20文字に制限します。必要に応じて文字数「20」を変更してください。
タイトルの後ろに省略記号「…」を表示する場合は、次のように記載します。
<?php echo mb_substr($post->post_title, 0, 20).'...'; ?>
なお、上記のコードは全てのタイトルに「…」が表示されます。
タイトルが短くて省略していない場合でも「…」が付くため、省略していない場合に「…」を表示しないのではあれば、次のようにします。
<?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のタグが含まれる場合は除去する必要があります。通常であれば、タイトルにタグが含まれることは稀ですが、除去する場合は以下のように記述します。
<?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文字未満であれば「...」を非表示
}
?>
本文の文字数を制限
本文の文字数を制限して表示したい場合は、以下のコードを使用します。
<?php echo mb_substr(strip_tags($post-> post_content),0,200) ; ?>
本文から200文字取り出して表示します。「200」は自由に変更してください。
本文を省略したことを現わす「…」を表示する場合は、以下のように変更します。
<?php echo mb_substr(strip_tags($post-> post_content),0,200) . '...'; ?>
「…」で、本文が抜粋されて省略されていることが分かりやすくなりました。
なお、本文が短くて省略していない場合でも「…」は表示されます。
例えば、設定を「200」にした場合に、200文字以上は「…」が表示されて、それ未満であれば表示しないなら以下のように記述します。
<?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文字取り出す場合は、「-」記号を記入します。
<?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」により調整して出力します。
このような細かい部分も考慮するのであれば、以下のように変更します。
<?php echo mb_substr(strip_tags(apply_filters('the_content', $post->post_content)), 0, 200); ?>
抜粋文の文字数を制限
トップページやカテゴリーなどの記事一覧に表示する抜粋文の文字数を制限します。

抜粋文は「<?php the_excerpt(); ?>」を使用して表示します。
<?php echo mb_substr(get_the_excerpt(),0,100); ?>
上記では抜粋文を100文字に制限しています。
抜粋文の後ろに「…」を表示する場合は、以下のように記述します。
<?php echo mb_substr(get_the_excerpt(),0,100) . '...'; ?>
functionsから文字数を制御
functions.phpから抜粋文の文字数を制御することもできます。
次のコードをfunctions.phpに記述します。
//概要(抜粋)の文字数
function my_length($length) {
return 100;
}
add_filter('excerpt_mblength','my_length');
//概要(抜粋)の省略記号
function my_more($more) {
return '…';
}
add_filter('excerpt_more', 'my_more');
上記では、抜粋文を100文字に制限して、最後に「…」を表示します。
次に、抜粋文を表示したい位置に次のコードを記述します。
<?php the_excerpt(); ?>
WordPress専用の関数
WordPressには文字数を制限する専用の関数も存在します。
それが、「WP_trim_words」関数です。
先程紹介したPHP関数「mb_strlen」か「WordPress関数「WP_trim_words」のどちらを使用しても大丈夫です。
「WP_trim_words」は本文の先頭から指定された文字数を取り出します。
なお、この関数が正しく動作するためには、WordPressプラグインの「WP Multibyte Patch」をインストールして、有効化しておく必要があります。
タイトルの文字数制限
タイトルの文字数を制限する場合は、以下のように記述します。
<?php echo wp_trim_words( get_the_title(), 20, '...' ); ?>
上記では文字数を20文字に制限して、最後に「…」表示させています。
本文の文字数制限
本文から200文字取り出す場合は以下のように記述します。
<?php echo wp_trim_words( get_the_content(), 200, '...' ); ?>
上記では本文から200文字取り出して、最後に「…」を追加しています。「200」は必要に応じて変えてください。
ちなみに、「200」の部分を省略すると初期設定では「110」になり、自動的に110文字を取り出します。
まとめ
WordPressサイトで文字数を制限して取り出す方法をご紹介しました。
他の部分に抜き出して一部を表示したいときなどに役立ちます。地味な方法ですが、知っておくと便利です。
是非、機会があれば使ってみてください。
*記事を書くのに、次のサイトを参考にさせて頂きました。感謝いたします。