Go to top Go to bottom

投稿の本文を表示するには、the_content()を使用します。出力せず、文字列として取得するには、get_the_content()を使います。

用例
  • 記事一覧で記事の本文を表示する
  • 個別ページで記事の本文を表示する
  • 記事のプレビューのために、抜粋文を自動的に生成する
関連
Codex

記事の本文を出力する

記事の本文を表示するには次のようにします。

<?php the_content(); ?>

theがついているのでWordPressループ内で使用します。次のようにすると、記事のタイトルと本文を出力するWordPressループを作成することができます。

<?php if ( have_posts() ) : ?>
  <?php while( have_posts() ) : the_post(); ?>
      <h2><?php the_title(); ?></h2>
      <p><?php the_content(); ?></p>
  <?php endwhile;?>
<?php endif; ?>

この処理を実行すると、例えば次のような結果になります。

WordPressループの例の実行結果
WordPressループの例の実行結果

個別ページでも同じように使用できます。個別ページではpタグではなくdivで囲うなどすることになるでしょう。

<div><?php the_content(); ?></div>

記事の本文を取得する

記事を出力せず、文字列として取得するには、get_the_content()関数を使います。

<?php $content = get_the_content(); ?>

アーカイブ系のテンプレートでこの文字列をログとして出力すると、次のような結果が得られます。

予報通り、昨日から降り始めた雨は、夜になると雪に変わった。まるで、一気に真冬に引き戻されたかのように、凍てつく空気が肌に刺さる。



「この降り方だと、たぶん積もらないだろうな」などと考える僕の脳裏には、青森県の小さな町の光景がフラッシュバックしていた。



<a href="http://localhost/minimalist/photo/snowy-day/#more-133" class="more-link"><span aria-label="続きを読む 雪の日">(さらに&hellip;)</span></a>

ログを見てわかる通り、HTMLのタグを含めた文字列が返されます。HTMLタグだけでなく、ショートコードも文字列として含まれて返ってきます。逆に言うと、the_content()で出力される文字列と、get_the_content()で返される文字列は、厳密には一致しません

HTMLタグを取り除くには、strip_tags()関数を、ショートコードを取り除くには、strip_shortcodes()関数を使います。これらを利用すると、純粋なテキストのみを取得することができます。

<?php
  $content  = get_the_content();
  $text     = strip_tags( strip_shortcodes( $content ) );
?>

the_content()と同じ結果をget_the_content()で取得する

上述の通り、the_content()で出力される文字列はget_the_content()で取得できる文字列と同じにはなりません。Codexによると、get_the_content()で取得する場合、the_contentのフィルターを通らないために差が生じるとのことです。

この差をなくし、the_content()と全く同じ結果を得るには、次のようにします。

<?php
  $content = apply_filters( 'the_content', get_the_content() );
  $content = str_replace( ']]>', ']]&gt;', $content );
?>

詳しくはCodexを参照してください。

なお、ショートコードを展開させたいだけであれば、do_shortcode()を使うこともできます。

<?php
  $content = do_shortcode( get_the_content() );
?>

実用面ではdo_shortcode()のほうがよく登場する印象があります。