the_content()

the_content()
目次

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_textstring<!--more-->タグによる区切り以降の「続きを読む」リンクのテキスト
$strip_teaserbooltrueにすると「ティーザー(more以前の内容)」を除外して表示する

通常は引数を省略して使われるケースが多く、実際には以下のように書かれます。

<?php the_content(); ?>

the_content()の基本的な使い方

テーマのテンプレートファイル(例:single.phppage.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.phpget_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のテーマ開発において最も中心的な関数のひとつです。
その役割は単純に見えて、フィルター処理やタグ対応、出力の柔軟性など、非常に多くの仕組みが連動しています。

適切に使いこなすことで、広告の自動挿入・ショートコードの処理・マルチページ分割・デザインの調整など、さまざまな表現が可能になります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初めてホームページを作成したのは1996年。
2000年よりフリーランスで主に中小企業、学校、各種公的団体、個人事業主のWordPressを活用したホームページ制作を行っています。WordPressテーマはそれぞれのクライアントに合わせて作成しています。
WordPressを活用したサイト運営のための情報発信をしていきます。

目次