はじめに
WordPressでは、記事の冒頭だけを表示して「続きを読む」で全文を確認させるケースが多くあります。
トップページやアーカイブページでは、<!--more-->(「続き」ブロック)を使って本文の一部だけを抜粋することが一般的です。
しかし、get_the_content()を使うと、投稿や固定ページによって取得される本文の範囲が異なる場合があります。
この記事では、「続き」ブロック前の本文だけを安全に取得する方法を解説します。
$moreとは
WordPressでは、get_the_content()やthe_content()が<!--more-->をどう扱うかを、グローバル変数$moreで制御します。$moreの値によって、取得される本文の範囲が変わります。
| $more | 動作 |
|---|---|
| 0 | 「続き」ブロック前のみ取得 |
| 1 | 全文を取得 |
$moreの初期値と挙動
表2に$moreの初期値と挙動を示します。
このように、使い方やループの種類によって取得される本文の範囲が異なります。
| 場所 | $more初期値 | get_the_content()の挙動 |
|---|---|---|
| メインループ | 0 | 「続き」ブロックの前のみ取得 |
| 投稿・固定ページ | 1 | 全文を取得 |
投稿・固定ページで安全にmore前だけ取得する方法
投稿・固定ページで「続き」ブロックの前だけを取得したい場合は、$moreを一時的に変更する方法が推奨されます。
global $more;
$old_more = $more;
$more = 0;
$snippet = get_the_content('');
$more = $old_more;
さいごに
今回紹介した方法を使えば、WordPressで「続き」ブロック前だけを確実にスニペットとして取得できます。
特に投稿・固定ページでは$moreの初期値が1のため、そのままでは全文が取得されますが、一時的に$more = 0に切り替えてから本文を取得し、元に戻すことで副作用なく安定してスニペットを制御可能です。


