WordPressテーマには、投稿の編集画面に「抜粋」と呼ばれる以下のようなフィールドが存在します。
クラシックエディタ | ブロックエディタ |
この抜粋機能の利用用途は、テーマやプラグインによって様々ですが、一般的に記事一覧の抜粋に表示することが多いです。
当記事では、この抜粋の基本的な取得方法〜カスタマイズ方法について解説していきます。
WordPressの抜粋を取得・表示できる関数2つ
抜粋を扱う関数は主に以下の2つです。
これらは抜粋フィールドが入力されているかどうかで挙動が変わります。抜粋未入力の場合に取得する内容は以下になります。
- 本文に書かれた内容の冒頭から110文字(英語版は55文字)までを取得・表示
- 文字数制限を超えると[…]が末尾に付く
- 「moreタグ」が本文内にあればそれまでを取得
the_excerpt()
抜粋に入力された文章を出力する関数です。(変数に格納するような使い方はできません。)PHPファイルに書き込むことで、以下の出力結果になります。
// 抜粋に「こちらは抜粋文です。」と入力されている場合
the_excerpt();
// 出力結果
// <p>こちらは抜粋文です。</p>
なお、こちらは抜粋を表示する前にフィルターを適用するため、文章が自動的にpタグで囲まれ、改行箇所にbrタグが挿入されます。WordPressループの外では使えません。
get_the_excerpt()
抜粋文を文字列で取得できる関数です。抜粋に入力された文章を返すだけなので、変数へ格納する、出力するなどの使い方ができます。
// 抜粋に「こちらは抜粋文です。」と入力されている場合
$excerpt = get_the_excerpt();
// サイト上に出力
echo $excerpt;
// 出力結果
// こちらは抜粋文です。
the_excerpt()とは異なり、自動的にpタグで囲むなどのフィルターを通しません。入力された文章をそのまま利用したい方は、こちらの関数を利用しましょう。
なお、こちらは引数に投稿ID(投稿オブジェクトも可)を指定することで、WordPressループ外で利用できます。
// 投稿IDが56の抜粋文を取得
get_the_excerpt( 56 );
抜粋のカスタマイズ方法4つ
テーマ開発するなら、抜粋文の仕様を変えたい方が多いと思います。今回は、以下の4つのカスタマイズ方法についてご紹介していきます。
- 抜粋の文字数制限を変更
- 末尾の省略記号[…]を変更
- 自動挿入されるHTMLタグを除去
- 固定ページで抜粋を有効化
抜粋の文字数制限を変更
抜粋文の取得には、110文字までの制限が存在します。こちらの制限文字数は、以下をfunctions.phpに記載することで変更できます。
// 文字数制限を110から200に変更
add_filter( 'excerpt_length', function( $length ){
return 200;
}, 999 );
上記は、110文字から200文字に変更する内容となっておりますが、200の箇所を他の数値に変えていただくことで、制限数を変更できます。
末尾の省略記号[…]を変更
文字数制限を超えると、自動的に[…]が挿入されます。この記号を変更する場合は、以下をfunctions.phpに記入してみてください。
// 省略記号を「…」に変更する
add_filter( 'excerpt_more', function( $more ){
return '…';
}, 999 );
上記は、「…」に変更するサンプルですが、他の記号に変更したい方は「…」をお好きな文字列に変更してください。
なお、抜粋文の末尾に「続きを読む」リンクを付けたい方は、以下を記入することで実現できます。
// 省略記号を「… 続きを読む」に変更する
add_filter( 'excerpt_more', function( $more ){
return '… <a class="more-link" href="' . esc_url( get_permalink() ) . '">' . '続きを読む' . '</a>';
}, 999 );
自動挿入されるHTMLタグを除去
the_excerpt()で解説したように、入力した抜粋文には自動的にpタグやbrタグが挿入されます。これを回避する場合は、以下をfunctions.phpに記入します。
// 抜粋の自動整形を無効化
remove_filter( 'the_excerpt' , 'wpautop' );
この1行だけで自動整形機能を無効化できるので、非常に簡単ですね。
固定ページで抜粋を有効化
固定ページには、デフォルトで抜粋文のフィールドが用意されていません。固定ページでも抜粋文を利用する場合は、以下をfunctions.phpにご記入ください。
// 固定ページの抜粋を有効化
add_post_type_support( 'page' , 'excerpt' );
なお、カスタム投稿は登録時に抜粋を有効化できるか指定できます。もし既存テーマで特定のカスタム投稿の抜粋をする場合は、固定ページと同じように対応できます。
add_post_type_support( 'カスタム投稿名' , 'excerpt' );
// 例)カスタム投稿「news」の抜粋を有効化
add_post_type_support( 'news' , 'excerpt' );
まとめ
今回は、抜粋文の取得・カスタマイズ方法についてご紹介しました。少し仕様が特殊ですが、カスタマイズすれば自分好みに扱うことができるので、ぜひ紹介した内容を試してみてください。
なお、抜粋とセットで使うのが、投稿の基本情報の取得ですよね。以下にタイトルやカテゴリー、アイキャッチ画像の取得方法についても紹介してますので、合わせてご覧ください。
投稿や固定ページの編集画面には、そのページの見出しを入力する箇所が設けられています。この見出しが記事タイトルや一覧ページの各タイトルに利用されるんですね。 今回は、その個別ページのタイトルを取得・表示する方法についてご紹介します。 個別ページのタイトルを取得する方法 投稿や固定ページ、カス...
既存テーマのカスタマイズやクライアントワーク等、投稿のカテゴリーに関する情報を取得して、様々なコンテンツを作成・編集したいケースがあります。 今回は、これからWordPress開発を始める方向けに、カテゴリーを取得する関数を用途別に分類してみました。 はじめは、どの関数を使えばどの情報を...
コメント