WordPressでは、投稿記事や固定ページの本文(コンテンツ)を扱う際に、主に次の2つの関数を使用します。

  • 記事本文を出力(表示)したい場合 → the_content()
  • 記事本文を取得(変数に代入)したい場合 → get_the_content()

一見すると似ていますが、役割・使いどころ・注意点が大きく異なるため、正しく理解して使い分けることが重要です。

「the_content()」の使い方

基本的な使い方

the_content()は、記事本文をそのまま画面に出力する(echoする)関数です。
基本的にはWordPressループ内で使用します。

例えば、トップページやアーカイブページなどの記事一覧で使用する場合は、次のようになります。

<h2>マイブログ</h2>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h3><?php the_title(); ?></h3>
<p><?php the_content(); ?></p>


<?php endwhile; endif; ?>

the_content()は、戻り値を返しません
そのため、以下のような使い方は誤りです。

<?php $content = the_content(); ?> ❌

本文を変数に代入したい場合は、後述するget_the_content()を使用します。

the_content() の引数について

the_content()には、以下の2つの引数を指定できます。

the_content( $more_link_text = null, $strip_teaser = false );

何も指定しなければ、記事本文がそのまま全文表示されます。

第1引数:<!–more–> 以降を表示するリンクテキスト

第1引数では、<!--more-->を挿入している場合に、
「続きを読む」リンクとして表示するテキストを指定できます。

<?php the_content(“全文を読む”); ?>

記事内に<!--more-->がある場合、次のような挙動になります。

  • <!--more-->より前の文章が表示される
  • 末尾に「全文を読む」というリンクが表示される
  • クリックすると、記事の全文ページへ遷移する

<!--more-->が存在しない場合、この引数は無視されます。

第2引数:<!–more–> 以前の本文を表示するかどうか

第2引数$strip_teaserは、<!--more-->より前の本文を表示するかどうかを制御します。

  • false(デフォルト) <!--more-->より前の本文を表示
  • true <!--more-->より前の本文を表示せず、後半のみ表示

<?php the_content(“”, true); ?>

※ 実務ではあまり使用されることはなく、
通常はデフォルト(false)のままで問題ありません。

「get_the_content()」の使い方

基本的な使い方

get_the_content()は、記事本文を取得して返す関数です。
表示は行われず、変数に代入して加工・条件分岐などに使うことができます。

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php $content = get_the_content(); ?>


<?php endwhile; endif; ?>

get_the_content() の重要な注意点(最新情報)

get_the_content()で取得できる本文は、フィルタが適用されていない生データです。

つまり、以下は自動では適用されません

  • 改行の<p> / <br>変換(wpautop)
  • ショートコードの展開
  • 埋め込み(YouTubeなど)

そのため、実際に表示する場合は必ずフィルタを通す必要があります。

<?php
$content = get_the_content();
$content = apply_filters( ‘the_content’, $content );
echo $content;
?>

「取得した本文を表示したい」場合は、この処理が必須です。

第1引数:<!–more–> 以降を表示するリンクテキスト

get_the_content()の第1引数も、the_content()と同様に
<!--more-->用のリンクテキストを指定できます。

<?php $content = get_the_content(“全文を読む”); ?>

※ ただし、リンクHTMLが返るだけなので、そのまま表示する場合はechoが必要です。

第2引数:<!–more–> 以前の本文の表示・非表示

第2引数の挙動もthe_content()と同じです。

  • false(デフォルト):全文取得
  • true:<!--more-->より前を除外

<?php $content = get_the_content(“”, true); ?>

the_content() と get_the_content() の使い分けまとめ

用途使用する関数
記事本文をそのまま表示したいthe_content()
本文を加工・条件分岐・文字数制限したいget_the_content()
取得した本文を表示したいget_the_content() + apply_filters

まとめ

WordPressで記事本文を扱う際は、表示するのか、取得するのかによって使用する関数が明確に分かれています。

  • 記事本文をそのまま画面に表示したい場合は
    the_content()を使用する
  • 記事本文を変数に代入して加工したい場合は
    get_the_content()を使用する

特にget_the_content()は、フィルタが適用されていない生データを返すという点が重要です。
そのまま表示すると、改行やショートコードが正しく処理されない原因になります。

取得した本文を表示する場合は、必ず次のように
apply_filters( 'the_content', $content )を通すことを意識しましょう。

これらの違いを正しく理解しておくことで、

  • テーマ開発時のレイアウト崩れを防げる
  • 不要なバグや表示トラブルを回避できる
  • WordPressらしい正しい実装ができる

「表示は the_content()、加工は get_the_content()」
この基本を押さえておけば、記事本文の扱いで困ることはほとんどなくなります。