Uncategorized

<p>タグの中に<p>タグが入る?WordPress編集における the_contentの取り扱い

WordPressでサイトを制作していると、投稿本文を出力するために the_content() を使う場面がよくあります。しかし、HTMLの構造をきちんと考慮しないと、意図せず <p>タグがネストしてしまうなど、マークアップ上の問題が起こることがあります。

今回は、「本文の出力方法」と「表示形式に応じた出力方法の選択」について整理しておきましょう。

WordPressの投稿本文(the_content())は、編集画面上で改行や段落を使って書かれています。そのため、出力時には自動的に <p>タグや <br>タグが挿入されます。

<p class="custom-text"><?php the_content(); ?></p>

このように、<p>タグの中で the_content() を呼び出すと、二重の <p>タグ になってしまい、レイアウトが崩れる原因になります。

目的別に選ぶ!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の本文出力は柔軟ですが、その分だけ意図しない表示になりやすい部分でもあります。ぜひ、用途に応じた使い分けで、見やすく整ったサイトを目指してみてください!

最後までご覧いただき、ありがとうございました!

-Uncategorized