the_excerpt()やthe_content()を使って投稿の抜粋や本文を出力する時に、中に含まれるHTMLを除去する方法についてご紹介いたします。
WordPressで投稿の抜粋や本文を出力する時にHTMLを除去する方法
通常は、抜粋や本文を出力すると、中に含まれるHTMLがそのまま出力されますが、strip_tagsを使うことでHTMLを除去することができます。
さらに、strip_tagsだけだと改行部分に空白スペースが入ってしまうので、str_replaceを使ってこれも完全に除去します。あと、mb_substrで文字数も制限します。
HTMLを除去した抜粋の出力
HTMLを除去したうえで抜粋を出力するには、以下のように記述します。
<?php echo mb_substr(str_replace(array("\r\n", "\r", "\n"), '', strip_tags(get_the_excerpt())), 0, 50); ?>
上記のようにすることで、HTMLを除去した抜粋が50文字表示されます。最後の「50」を変更すれば、出力文字数を変更できます。
文字数の制限をしなくて良い場合は、以下のようにmb_substrを外せばOKです。
<?php echo str_replace(array("\r\n", "\r", "\n"), '', strip_tags(get_the_excerpt())); ?>
HTMLを除去した本文の出力
抜粋ではなく本文のHTMLを除去する場合は、以下のように記述します。
<?php echo mb_substr(str_replace(array("\r\n", "\r", "\n"), '', strip_tags(get_the_content())), 0, 50); ?>
get_the_excerptをget_the_contentに変えているだけですね。文字数の制限をしなくて良い場合は、以下のようにします。
<?php echo str_replace(array("\r\n", "\r", "\n"), '', strip_tags(get_the_content())); ?>
あとがき
投稿一覧などで抜粋や本文のHTMLを除去してデザインを統一したい、というケースは結構あるかと思いますので、覚えておくと便利ですよ。
ちなみに、strip_tagsもstr_replaceもmb_substrも、PHPの関数です。WordPressで用意されている関数というわけではありません。