005
投稿の本文を取得・表示する
Library
投稿の本文を表示するには、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; ?>この処理を実行すると、例えば次のような結果になります。

個別ページでも同じように使用できます。個別ページでは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="続きを読む 雪の日">(さらに…)</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( ']]>', ']]>', $content );
?>詳しくはCodexを参照してください。
なお、ショートコードを展開させたいだけであれば、do_shortcode()を使うこともできます。
<?php
$content = do_shortcode( get_the_content() );
?>実用面ではdo_shortcode()のほうがよく登場する印象があります。
Comment