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