WordPress:RSSフィードにmoreタグを入れた箇所までの内容だけを出力

Date :
Category :
WordPress » RSSフィード
Share this :

記事の作成時にmoreタグを使用して抜粋の指定をしている場合、RSSにもmoreタグを入れた箇所までの内容だけを出力してフィードさせるようにします。

抜粋の設定で表示させる文字数に制限をかけていても、RSSフィードでは文字数に関係なくmoreタグを入れた箇所までの内容が全て表示されるようになります。

RSSフィードにmoreタグを入れた箇所迄の内容だけを出力

function.phpに以下を追加します。

function.php

function my_content_feeds($content) {
	global $post, $more;
	$more = false;
	$content = apply_filters('the_content', get_the_content(''));
	$content = str_replace(']]>', ']]>', $content);
	return $content;
}
add_filter('the_excerpt_rss', 'my_content_feeds');
add_filter('the_content_feed', 'my_content_feeds');

moreタグ迄の表示で改行や段落、画像を無効にしたい場合は、5行目の下に以下を追加することで無効にすることが出来ます。

	$content = strip_tags($content);
	$content = str_replace(array("rn","r","n","t"), '', $content);

この2行の追加することで、RSSに出力される該当箇所のHTMLタグを取り除き、それにより発生する余分なスペースや改行を削除する処理を行います。

RSSフィードにmoreタグを入れた箇所迄の内容とアイキャッチ画像を出力

moreタグ迄の出力内容と一緒に、記事に設定したアイキャッチ画像もRSSフィードに出力させたい場合は、function.phpに以下を追加します。

function.php

function my_content_feeds($content) {
	global $post, $more;
	$more = false;
	$content = apply_filters('the_content', get_the_content(''));
	$content = str_replace(']]>', ']]>', $content);
	if(has_post_thumbnail($post->ID)) {
		$content = '<p>' . get_the_post_thumbnail($post->ID) . '</p>' . $content;
	}
	return $content;
}
add_filter('the_excerpt_rss', 'my_content_feeds');
add_filter('the_content_feed', 'my_content_feeds');

出力するアイキャッチ画像のサイズを変更する場合は、
7行目の get_the_post_thumbnail($post->ID) を以下のように変更します。

/* サムネイルのサイズ */
get_the_post_thumbnail($post->ID, 'thumbnail')

/* 中サイズ */
get_the_post_thumbnail($post->ID 'medium')

/* 大サイズ */
get_the_post_thumbnail($post->ID 'large')

/* フルサイズ */
get_the_post_thumbnail($post->ID 'full')

/* 名前を付けてサイズ設定した場合 */
get_the_post_thumbnail($post->ID 'サイズ設定名')

以上、「WordPress:RSSフィードにmoreタグを入れた箇所までの内容だけを出力」でした。