WordPressの投稿や固定ページには、エディタ(クラシック or ブロック)が用意されています。このエディタに入力した本文がWebページのメインコンテンツになります。

今回は、この本文を出力できる「the_content()」の使い方についてご紹介します。

the_content()とは?

WordPressで投稿やカスタム投稿、固定ページの本文(エディターに書いた内容)を出力できる関数です。WordPressループの中で利用します。

the_content( $more_link_text, $strip_teaser );
$more_link_text 「続きを読む」リンクテキストに表示する文言
$strip_teaser <!–more–>以降のテキストを表示するかどうか

これらの引数は、アーカイブページの記事一覧で「続きを読む」のリンクテキストを表示したい場合に関係します。記事一覧の抜粋文には「the_excerpt()」を利用する方が多いので、引数を空のまま使用することがほとんどです。

記事一覧に表示する抜粋文を取得したい方は、以下をご利用ください。

それでは、the_content()の使い方を順番に解説していきます。

  • 本文を出力する基本的な使い方
  • 本文を取得する方法
  • 自動整形機能を無効化する方法

本文を出力する基本的な使い方

the_content()は、一般的に投稿や固定ページなどの個別ページに本文を出力するために使います。そのため、以下のPHPファイル内に記述することが多いですね。

single.php 投稿の個別ページ
page.php 固定ページ
single-{post-type}.php カスタム投稿の個別ページ

本文を出力する時は、これらのファイルに以下の形式で記入していきます。これでエディターに入力した内容がサイト上にも反映されるようになります。

<?php
if ( have_posts() ) :
  while( have_posts() ) : the_post();
    the_content(); /* 本文を出力 */
  endwhile;
endif;
?>

なお、the_content()を囲む記述は、投稿情報の取得や存在チェックなどを行っています。本文だけに特定のスタイルを指定する場合は、以下のようにthe_content()を特定のHTMLタグで囲むといいでしょう。

<?php
if ( have_posts() ) :
  while( have_posts() ) : the_post();
    echo '<div class="editor-style">';
    the_content(); /* 本文を出力 */
    echo '</div>';
  endwhile;
endif;
?>

本文を取得する方法

the_content()は、本文を出力できる関数のため、取得に利用することはできません。本文を取得する時は、get_the_content()を利用します。

// 本文を取得
$content = get_the_content();
echo $content;

これでエディターの内容を取得できますが、the_content()で出力する内容とは若干異なります。

というのも、the_content()では、本文を取得した後に、pタグの自動追加やショートコードの変換などのフィルターを通してから出力しているんですね。get_the_content()では、その加工が行われていないのです。

the_content()と同じ内容を取得するなら、以下のようにthe_content()と同じ加工を行いましょう。

// 本文を取得
$content = get_the_content();

$content = apply_filters( 'the_content', $content );
$content = str_replace( ']]>', ']]&gt;', $content );

// the_content()と同じフィルターを適用済み
echo $content;

本文の自動整形機能を無効化する(改行やpタグの挿入など)

the_content()では、エディターに入力した本文に対して、改行タグやpタグの挿入を自動で行うフィルターがかけられています。この自動整形機能を無効化する場合は、以下をfunctions.phpに記入してください。

// WordPressの自動整形機能を無効化する
remove_filter( 'the_content', 'wpautop' );

これで自動的にHTMLタグが挿入するのを防ぐことができます。なお、こちらは以下のプラグインでも無効化できます。

本文取得時に陥りがちな問題

the_content()とget_the_content()で取得する内容が異なることから、以下のような問題に直面することがあります。

  • get_the_content()で改行が反映されない
  • get_the_content()でショートコードが動作しない
  • get_the_content()でテキストだけ取得したい

これらが起きた時の問題の対処方法を順番に解説していきますので、ぜひ参考にしてください。

get_the_content()で改行が反映されない

the_content()でかけられているフィルターが適用されていないことが原因です。get_the_content()で取得した本文に以下を加えてください。

$content = get_the_content();

// フィルター適用
$content = apply_filters( 'the_content', $content );

get_the_content()でショートコードが動作しない

こちらもthe_content()でかけられているフィルターが適用されていないことが原因です。以下を追記してください。

$content = get_the_content();

// フィルター適用
$content = apply_filters( 'the_content', $content );

なお、上記だとWordPressの自動整形(pタグや改行タグの自動挿入)も反映されるので、それを避けたい方は、以下に変更してください。

$content = get_the_content();

// ショートコードがあれば展開
$content = do_shortcode( $content );

get_the_content()でテキストだけ取得したい

get_the_content()で取得した本文には、HTMLタグやショートコードなども含まれています。これらを省いてテキストだけを取得する場合は、以下を追記してください。

$content = get_the_content();

// HTMLタグの除去
$content = strip_tags( $content );

// ショートコードの除去
$content = strip_shortcodes( $content );

まとめ

今回は、WordPressのエディタの内容を出力する「the_content()」の使い方について解説しました。たった1行で出力できるので、非常に便利な関数ですよね。

また、本文以外にも投稿に紐づく情報がいくつかあります。タイトルやアイキャッチ画像、カテゴリーなどの取得方法も知りたい方は、ぜひ以下もご覧ください。