WordPress整体院
主にwordpressのカスタマイズやトラブル対策
  1. ホーム
  2. > WordPress
  3. > WordPressの抜粋(get_the_excerpt)で任意の記事の抜粋を表示したい
WordPress
2019.05.01.

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

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

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

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

スポンサーリンク

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

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

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

function my_excerpt( $post_id, $length = 120, $text = '...' ) {
	$post         = get_post( $post_id );
	$post_excerpt = $post->post_excerpt;
	if ( empty( $post_excerpt ) ) {
		// 抜粋にデータがない場合は投稿記事から切り取る.
		return wp_html_excerpt( strip_shortcodes( $post->post_content ), $length, $text );
	} else {
		// 抜粋がある場合はそのまま抜粋の内容を返す.
		return $post_excerpt;
	}
}

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

簡単に説明しておくと、

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

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

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

スポンサーリンク
デジ部長 デジ部長 WordPress

コメント

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

コメントをどうぞ

返信をキャンセルする。

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

email confirm*

post date*

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

≪前の投稿
サーチコンソールで「DNS レコードでのドメイン所有権の確認」をする方法(エックスサーバー編)
次の投稿≫
flexboxで要素を均等幅で横並びに配置する

プロフィール

HN:デジ部長
整体院とパーソナルトレーニングをやっていますが、WordPressをいじっていたらそちらの方が楽しくなり、知り合いのサイト作成やテーマ作りなどをボチボチとやっています。
このブログはそのときの覚え書きなどが主な目的でやってます。

カテゴリー

  • HTML/CSS
  • javascript
  • Mac
  • PHP
  • PPC広告
  • SEO
  • WordPress
  • カスタマイズ
  • サイト管理関係
  • テーマ開発
  • パソコン全般
  • プラグイン
  • 思った事

トップ
Copyright© 2019-2025 WordPress整体院 all right reserved