WordPressの投稿や固定ページには、エディタ(クラシック or ブロック)が用意されています。このエディタに入力した本文がWebページのメインコンテンツになります。
今回は、この本文を出力できる「the_content()」の使い方についてご紹介します。
the_content()とは?
WordPressで投稿やカスタム投稿、固定ページの本文(エディターに書いた内容)を出力できる関数です。WordPressループの中で利用します。
the_content( $more_link_text, $strip_teaser );
$more_link_text | 「続きを読む」リンクテキストに表示する文言 |
$strip_teaser | <!–more–>以降のテキストを表示するかどうか |
これらの引数は、アーカイブページの記事一覧で「続きを読む」のリンクテキストを表示したい場合に関係します。記事一覧の抜粋文には「the_excerpt()」を利用する方が多いので、引数を空のまま使用することがほとんどです。
記事一覧に表示する抜粋文を取得したい方は、以下をご利用ください。
WordPressテーマには、投稿の編集画面に「抜粋」と呼ばれる以下のようなフィールドが存在します。 クラシックエディタ ブロックエディタ この抜粋機能の利用用途は、テーマやプラグインによって様々ですが、一般的に記事一覧の抜粋に表示することが多いです。 ...
それでは、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( ']]>', ']]>', $content );
// the_content()と同じフィルターを適用済み
echo $content;
本文の自動整形機能を無効化する(改行やpタグの挿入など)
the_content()では、エディターに入力した本文に対して、改行タグやpタグの挿入を自動で行うフィルターがかけられています。この自動整形機能を無効化する場合は、以下をfunctions.phpに記入してください。
// WordPressの自動整形機能を無効化する
remove_filter( 'the_content', 'wpautop' );
これで自動的にHTMLタグが挿入するのを防ぐことができます。なお、こちらは以下のプラグインでも無効化できます。
2024年5月現在、このプラグインは WordPress の最新3回のメジャーリリースに対してテストされていません。もうメンテナンスやサポートがされていないかもしれず、最新バージョンの WordPress で使用した場合は互換性の問題が発生する可能性があります。 「テキストエディタで独自のHT...
本文取得時に陥りがちな問題
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行で出力できるので、非常に便利な関数ですよね。
また、本文以外にも投稿に紐づく情報がいくつかあります。タイトルやアイキャッチ画像、カテゴリーなどの取得方法も知りたい方は、ぜひ以下もご覧ください。
投稿や固定ページの編集画面には、そのページの見出しを入力する箇所が設けられています。この見出しが記事タイトルや一覧ページの各タイトルに利用されるんですね。 今回は、その個別ページのタイトルを取得・表示する方法についてご紹介します。 個別ページのタイトルを取得する方法 投稿や固定ページ、カス...
投稿の一覧や個別ページのヘッダーにアイキャッチ画像を表示することは多いですよね。 今回は、アイキャッチ画像を取得・表示できる関数をまとめました。事前準備から実際の活用までご紹介してますので、これから開発を始める方はぜひ参考にしてください。 アイキャッチ画像を取得するための事前準備 デフォル...
既存テーマのカスタマイズやクライアントワーク等、投稿のカテゴリーに関する情報を取得して、様々なコンテンツを作成・編集したいケースがあります。 今回は、これからWordPress開発を始める方向けに、カテゴリーを取得する関数を用途別に分類してみました。 はじめは、どの関数を使えばどの情報を...
コメント