WordPressでサイトを制作していると、投稿本文を出力するために the_content() を使う場面がよくあります。しかし、HTMLの構造をきちんと考慮しないと、意図せず <p>タグがネストしてしまうなど、マークアップ上の問題が起こることがあります。
今回は、「本文の出力方法」と「表示形式に応じた出力方法の選択」について整理しておきましょう。
WordPressの投稿本文(the_content())は、編集画面上で改行や段落を使って書かれています。そのため、出力時には自動的に <p>タグや <br>タグが挿入されます。
<p class="custom-text"><?php the_content(); ?></p>
このように、<p>タグの中で the_content() を呼び出すと、二重の <p>タグ になってしまい、レイアウトが崩れる原因になります。
Contents
目的別に選ぶ!get_the_content()の出力方法
出力方法を目的に応じて変えることで、安全かつ意図通りのマークアップができます。
✔ プレーンテキストにしたい(タグを全て除去)
<?php echo strip_tags(get_the_content()); ?>
- すべてのHTMLタグを除去して、純粋なテキストだけを出したいときに使います。
- メタ情報や概要文など、HTML構造が不要な場所におすすめ。
✔ 安全にHTMLを一部残したい(許可されたHTMLのみ出力)
<?php echo wp_kses_post(get_the_content()); ?>
- WordPressで許可されている一部のタグ(例:<p>, <a>, <strong>など)は残しつつ、不正なスクリプトや危険なタグは排除してくれます。
- 安全性が必要な場所や、ユーザー投稿を扱う場合に重宝します。
✔ 改行や段落をそのまま表示したい(投稿画面の見た目を再現)
<?php echo apply_filters('the_content', get_the_content()); ?>
- the_content()と同様、段落や改行を自動的に整えて出力。
- さらに、ショートコードや oEmbed などのフィルターも適用されます。
- 本文そのものをしっかり出したいときの最適解。
注意:「タグの重複を避ける書き方」
apply_filters('the_content', get_the_content()) はHTMLの段落構造を含むため、囲むHTMLタグには注意が必要です。
悪い例(pタグの中にpタグ):
<p class="text"><?php echo apply_filters('the_content', get_the_content()); ?></p>
良い例(divなどで囲む):
<div class="text"><?php echo apply_filters('the_content', get_the_content()); ?></div>
まとめ
出力形式 | 用途 | コード例 |
---|---|---|
プレーンテキスト | タグなしで純粋なテキストを出したい | strip_tags() |
HTML一部許可 | 安全に表示したい | wp_kses_post() |
投稿そのまま出力 | 本文表示、段落保持 | apply_filters('the_content', get_the_content()) |
WordPressの本文出力は柔軟ですが、その分だけ意図しない表示になりやすい部分でもあります。ぜひ、用途に応じた使い分けで、見やすく整ったサイトを目指してみてください!
最後までご覧いただき、ありがとうございました!