
the_content()とは?
はじめに:the_content()は「本文」を表示するタグ
WordPress のテーマ開発やカスタマイズにおいて、記事やページの「本文」を表示する関数が the_content()
です。
これは、投稿・固定ページ・カスタム投稿など、WordPress のコンテンツを扱う際に最もよく使われる関数のひとつであり、テーマの中心的な役割を担います。
たとえば、以下のように記述すると、投稿の本文(ビジュアルエディタで入力したコンテンツ)が出力されます。
<?php the_content(); ?>
the_content()の基本構文と引数
the_content( string $more_link_text = null, bool $strip_teaser = false )
引数の説明
引数名 | 型 | 説明 |
---|---|---|
$more_link_text | string | <!--more--> タグによる区切り以降の「続きを読む」リンクのテキスト |
$strip_teaser | bool | true にすると「ティーザー(more以前の内容)」を除外して表示する |
通常は引数を省略して使われるケースが多く、実際には以下のように書かれます。
<?php the_content(); ?>
the_content()の基本的な使い方
テーマのテンプレートファイル(例:single.php
、page.php
)内のループ中で使用します。
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php endwhile; endif; ?>
上記コードでは、投稿のタイトルと本文をそれぞれ表示します。
the_content()の出力される内容
the_content()
を使用すると、管理画面の投稿編集画面で入力した本文のHTMLがそのまま出力されます。
ただし、以下のような処理が自動で加えられます。
自動で行われる処理
- 自動整形(
wpautop()
により<p>
タグが追加) - 画像・動画などの埋め込み(
wp_embed
) - ショートコードの展開(
do_shortcode()
) <!--more-->
タグによる本文の省略と「続きを読む」リンクの挿入- フィルターによるカスタマイズ(
the_content
フック)
the_content()のタグの処理
WordPress の投稿エディタで <!--more-->
タグを挿入すると、投稿一覧などで「続きを読む」リンクが表示されます。
<?php the_content('続きを読む »'); ?>
このように第1引数にテキストを指定すると、<!--more-->
以降に進むリンクとして表示されます。
複数ページ()の処理
WordPress では <!--nextpage-->
タグを使用することで、1つの投稿を複数ページに分割できます。
このとき the_content()
は自動的にそれぞれのページに分割して表示し、ナビゲーションリンクを挿入します。
ナビゲーションのカスタマイズには wp_link_pages()
を併用します。
<?php
the_content();
wp_link_pages([
'before' => '<div class="page-links">ページ:',
'after' => '</div>',
]);
?>
the_content フィルターフックによる拡張
the_content()
は内部で apply_filters( 'the_content', $content )
を使用しているため、
テーマやプラグインによって「本文表示の直前に自動挿入」などが可能です。
代表的な用途
- SNSシェアボタンの自動挿入
- アフィリエイト広告の自動表示
- 特定キーワードの自動リンク化
フィルターの使用例
add_filter('the_content', 'my_add_footer_ad');
function my_add_footer_ad($content) {
if ( is_single() ) {
$ad_html = '<div class="footer-ad">広告をここに挿入</div>';
return $content . $ad_html;
}
return $content;
}
投稿ループ外で使う方法(get_the_content()
)
the_content()
は自動でフィルターを適用して echo
出力します。
「出力せずに変数として取得したい」「加工したい」ときは、次のような方法があります。
フィルター適用後の内容を取得
$content = apply_filters('the_content', get_the_content());
フィルターを外して取得(生データ)
$content = get_the_content();
この方法であれば、ショートコードや <p>
タグなどが展開されていない「元の本文データ」が取得できます。
the_content()のよくあるカスタマイズ例
「続きを読む」をボタンに変える
function custom_read_more_link() {
return ' <a class="more-link btn" href="' . get_permalink() . '">続きを読む</a>';
}
add_filter('the_content_more_link', 'custom_read_more_link');
ショートコードを本文中だけに限定して使いたい
add_filter('the_content', 'do_shortcode');
the_content()の注意点と落とし穴
注意点 | 解説 |
---|---|
the_content() は echo される | 出力される関数なので echo the_content() とすると二重出力になる |
投稿ループ内でのみ動作保証 | the_post() を実行しているループ内で使用するのが原則 |
フィルターが多く適用される | SNSボタンや広告が勝手に追加される原因にもなり得る |
get_the_content() は生データ | the_content() のような整形が行われないため見た目が異なる |
使用されるテンプレートファイル
テンプレート | 役割 |
---|---|
single.php | 単一投稿ページ |
page.php | 固定ページ |
archive.php | 投稿の一覧(カテゴリ・タグ)など |
index.php | すべてのデフォルトテンプレート |
content.php | get_template_part() で読み込むことが多い部分テンプレート |
CSSと連携する際のポイント
WordPressテーマによっては、the_content()
で出力された本文に entry-content
というクラスが付与されていることが多いです。
<div class="entry-content">
<?php the_content(); ?>
</div>
このクラスを基準に本文の装飾(行間・見出し・リンク・画像など)をCSSで調整します。
Gutenbergやブロックエディタとの関係
Gutenberg(ブロックエディタ)でも the_content()
は変わらず使用されます。
ブロックはHTML形式で保存されているため、the_content()
によってHTMLごと出力されます。
ブロックエディタ対応のテーマでは、CSS側で .wp-block-*
のクラスを使って調整する必要があります。
the_content()のまとめ
項目 | 内容 |
---|---|
関数名 | the_content() |
目的 | 投稿本文(ビジュアルエディタの内容)を出力 |
出力形式 | HTML(echo される) |
位置 | 投稿ループ内(have_posts() ~the_post() 間) |
処理内容 | HTML整形・ショートコード展開・moreタグ対応・フィルター適用 |
関連関数 | get_the_content() , apply_filters('the_content', ...) |
おわりに
the_content()
は、WordPressのテーマ開発において最も中心的な関数のひとつです。
その役割は単純に見えて、フィルター処理やタグ対応、出力の柔軟性など、非常に多くの仕組みが連動しています。
適切に使いこなすことで、広告の自動挿入・ショートコードの処理・マルチページ分割・デザインの調整など、さまざまな表現が可能になります。