the_content フックの使い方|説明・引数・注意点

説明

the_content は、投稿本文を出力する前に、内容を加工できるフィルターです。

基本構文

apply_filters( 'the_content', string $content )

引数

  • $content:本文のHTML

戻り値

加工後の本文を返します。

使い方(サンプル)

add_filter( 'the_content', function( $content ) {
	if ( is_single() && in_the_loop() && is_main_query() ) {
		$content .= '<p>お読みいただきありがとうございます。</p>';
	}
	return $content;
} );

注意点

  • is_single()・in_the_loop()・is_main_query() で絞らないと、サイドバーや抜粋などにも影響します。
  • 必ず値を返します。

実務での使いどころ

  • 投稿の本文の出力を、加工するとき(記事の末尾に、関連記事やボタンを追加する)。
  • 本文の中の、特定の文字を置き換えるとき。

よくあるミスと対処

  • return していない。本文が、空になる。
  • 自動で作る抜粋の生成の中でも、このフィルターが呼ばれるため、追加した内容が、抜粋に混ざる場合がある。
  • アーカイブや、ウィジェット、フィードの本文にも、適用される。個別ページのメインの本文だけなら、is_singular()・in_the_loop()・is_main_query() で、絞る。
  • このフックの中で、the_content() や、apply_filters( 'the_content', ... ) を呼んでいる。無限ループになる。
  • 自動の段落(wpautop)は優先度10、ショートコードの展開は優先度11。それより後に処理したいときは、優先度を大きくする。

NG例

add_filter( 'the_content', function ( $content ) {
	return $content . '<p>続きはこちら</p>'; // すべての本文に、追加される
} );

OK例

add_filter( 'the_content', function ( $content ) {
	if ( is_singular( 'post' ) && in_the_loop() && is_main_query() ) {
		$content .= '<p>続きはこちら</p>';
	}
	return $content;
}, 20 );

使い分け早見表

フィルター 加工する対象
the_content 投稿の本文
the_title 投稿のタイトル
excerpt_length 自動で作る、抜粋の長さ

関連項目

add_filter()、get_the_content()

公式リファレンス:the_content | WordPress Developer Resources

コメント

タイトルとURLをコピーしました