1. ホーム
  2. WordPress
  3. WordPressの抜粋(get_the_excerpt)で任意の記事の抜粋を表示したい

WordPressの抜粋(get_the_excerpt)で任意の記事の抜粋を表示したい

WordPressには記事の抜粋を表示してくれるthe_excerpt()get_the_excerpt()という便利な関数があります。

しかし、この関数はグローバルの$postに入っている抜粋を出力する仕様になっており、任意の記事の抜粋を表示させることはできません。使用する場所もループ内となっています。

今回は、記事内で他の記事へのリンク+抜粋を表示させたいという案件があり、そのときにとった方法の覚え書きです。

スポンサーリンク

任意の投稿の抜粋を取得する関数

get_the_excerpt()はグローバルの$postを参照する仕様になっているので、一時的に$postを書き換えてそのまま使うという方法もあります。ですが今回のケースでは記事内で使うので、あまり$postは書き換えたくありません。

ということで記事IDから投稿データを取得し、抜粋があればそれをそのまま返し、なければ記事全体から指定した文字数だけ切り出す仕様としました。ついでに切り出す場合に文字数や末尾に付ける文字列も指定できるようにしています。

これをfunction.phpに貼り付けてもらえば抜粋を取得する関数として使うことができます。文字数の初期値は120文字としています。

簡単に説明しておくと、

wp_html_excerpt()はHTMLタグを除去して指定の文字数を抜粋してくれる関数です。詳しくはcodexを見てください。末尾につける文字列(…)も任意に指定できる優れものです。これを使うことでプレーンなテキストを取り出すことができます。

strip_shortcodes()は記事内のショートコードを削除する関数です。詳しくはcodexを見てください。記事冒頭にショートコードを挿入した場合に、それがそのまま抜粋に表示されるのは微妙ですよね。その対策としてこの関数を使っています。

参考:the_excerptが出力されない | WordPress.org

スポンサーリンク

コメント

この記事へのコメントはありません。

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)