対象: WordPress(テーマファイルの編集ができる環境)
難易度: ★★☆
所要時間: 約5分
記事一覧のカード内に本文の抜粋を表示したい時、the_content()をそのまま出すと、見出しタグや画像、装飾ボックスまで丸ごと出力されてしまい、レイアウトが崩れます。HTMLタグを取り除いた「テキストだけ」を取得する方法を紹介します。
wp_strip_all_tags()でタグを取り除く
本文からHTMLタグだけを取り除いたテキストを得るには、wp_strip_all_tags()という関数を使います。
<?php
$plain_text = wp_strip_all_tags( get_the_content() );
echo mb_substr( $plain_text, 0, 100 ) . '…';
?>get_the_content()で本文のHTMLを取得し、wp_strip_all_tags()でタグを除去、mb_substr()で先頭100文字だけに切り詰める、という3段階の処理です。カード型の一覧デザインで、本文のさわりだけをテキストで見せたい時にちょうどいい書き方です。
ここまで自作する方法を紹介しましたが、実はWordPressには最初から同じことをやってくれるthe_excerpt()という関数があります。これはタグの除去・文字数の切り詰め(デフォルト55語)・末尾の「…」付与まで、すべて自動でやってくれます。抜粋文をピンポイントで自分で指定したい場合は、投稿編集画面の「抜粋」欄に直接書いておけば、そちらが優先的に使われます。単純にタグを外して切り詰めるだけなら、まずはthe_excerpt()で十分か検討してみてください。
それでも自作した方がいいケース
the_excerpt()は英語の「単語数」を基準に切り詰める仕様のため、日本語では文字数の目安がやや直感的でないことがあります。切り詰めたい文字数を自分で細かくコントロールしたい場合は、本記事で紹介したwp_strip_all_tags() + mb_substr()の組み合わせの方が扱いやすいです。
まとめ
wp_strip_all_tags( get_the_content() )で本文からHTMLタグを除いたテキストを取得できる- 切り詰めは
mb_substr()と組み合わせる - 単純な抜粋表示なら、標準機能の
the_excerpt()で足りることも多い - 文字数を日本語で細かく制御したい場合は、自作の組み合わせの方が扱いやすい