及川WEB室|ホームページ制作

HTML、CSS、JavaScript、スマートフォンサイト、Facebookなど、サイト制作に関する事をメモしています。
個人的な備忘録です。
及川WEB室 ホームページ制作HOME
及川WEB室 > Wordpress > Wordpress - 投稿の本文を文字数制限し特定のHTMLタグを残しそれ以外のHTMLタグを除外

Wordpress で、投稿の本文を文字数制限し、特定のHTMLタグを残し、それ以外のHTMLタグを除外する

2016/07/01
Wordpressで、投稿の一覧を、下記のような条件で表示させるための方法をメモしました。
  • 投稿の本文を文字数制限して表示。
  • 文字数制限をすると、HTMLタグが途中で途切れてレイアウトが崩れてしまう場合があるため、HTMLタグを除外する。
  • でも、改行<br>や文字色などの装飾<span>など特定のHTMLタグは残す

投稿の本文の文字数を制限し、HTMLタグを削除して表示する

wordpressの投稿で、文字数制限をしたい本文のテンプレートタグ <?php the_content(); ?> の代わりに下記のコードを記述。
コードの例。
<?php
if(mb_strlen($post->post_content, 'UTF-8')>120){
	$content= mb_substr(strip_tags($post->post_content), 0, 120, 'UTF-8');
	echo $content.'……';
}else{
	echo strip_tags($post->post_content);
}
?>
本文がHTMLタグも含め120文字より多い場合は、HTMLタグを削除した120文字を表示し、最後に「……」を付ける。
本文がHTMLタグも含め120文字以下の場合は、HTMLタグを外して全文表示。

↓こちらを参考にさせて頂きました。
もう悩まない! WordPressのタイトルと本文の文字数制限を使いこなす|TECHNICAL BLOG|株式会社エムハンド
http://www.m-hand.co.jp/program/5130/

特定のHTMLタグを残したい場合

wordpressの投稿で、文字数制限をしたい本文のテンプレートタグ <?php the_content(); ?> の代わりに下記のコードを記述。
コードの例。
<?php
if(mb_strlen($post->post_content, 'UTF-8')>120){
	$content= mb_substr(strip_tags(apply_filters('the_content', $post->post_content), '
<p><span>'), 0,120, 'UTF-8'); echo $content.'……'; }else{ echo strip_tags(apply_filters('the_content', $post->post_content), '
<p><span>'); } ?>
本文がHTMLタグも含め120文字より多い場合は、<br>タグと<p>タグと<span>タグを残しそれ以外のHTMLタグを削除した120文字を表示し、最後に「……」を付ける。
本文がHTMLタグも含め120文字以下の場合は、<br>タグと<p>タグと<span>タグを残しそれ以外のHTMLタグを削除し全文を表示。

※補足:
上記の「コードの例。」の3行目と6行目、
strip_tags」の第1引数で渡す文字列を「$post->post_content」にしてしまうと、HTMLタグが全部無くなってしまう(というか、「$post->post_content」はWordpressが自動で加工・変換する前の生のデータ)ので、「$post->post_content」の代わりに「apply_filters('the_content', $post->post_content)」を記述。

↓こちらを参考にさせて頂きました。
$post->post_content;は整形前の生のデータを抜き出してしまう | hacknote
http://hacknote.jp/archives/4148/


以上。
MENU Ξ