RSSフィードにアイキャッチ画像をしっかりと表示する方法

RSSフィードWordPress

これまでに何度かThemeによってRSSフィードやFeedlyなどにアイキャッチ画像が表示されないThemeがあります。このアイキャッチ画像を今更ながら再検証してみました。以前にfunction.phpにコード記載にて表示させる方法をいくつか試してみてきました。結果、Themeによって若干の違いがあることに気づきました。以下にアイキャッチ画像をプラグインなしでしっかりとRSSフィードに表示させる方法のコードを記載します。それぞれのThemeによってベストな方法が少し異なると思われますので、各々のThemeに合わせたコードを確認してみてください。

※function.phpの弄るのでまずはじめにバックアップをとってからにしてください。
(子テーマにて行うのを推奨します。)

スポンサーリンク

目次に戻る


スポンサーリンク

プラグインなしでRSSフィードにアイキャッチ画像をしっかりと表示させる方法です。

上記しましたように、いくつかの方法がありますので複数のコードを掲載いたします。

 

(方法1)

// RSSにアイキャッチを出力
function rss_post_thumbnail($content) {
global $post;
if(has_post_thumbnail($post->ID)) {
$content = '<p>' . get_the_post_thumbnail($post->ID) .
'</p>' . $content;
}
return $content;
}
add_filter('the_excerpt_rss', 'rss_post_thumbnail');
add_filter('the_content_feed', 'rss_post_thumbnail');

 

(方法2)

//RSSフィードにアイキャッチ画像を追加
function rss_thumbnail($content) {
global $post;
if (has_post_thumbnail($post->ID)) {
$content = '<p>' . get_the_post_thumbnail($post->ID,'full') .'</p>' . $content;
}
return $content;
}
add_filter( 'the_excerpt_rss', 'rss_thumbnail');
add_filter( 'the_content_feed', 'rss_thumbnail');

 

方法2は、方法1の以下コード部分に画像サイズを指定したものになります。

$content = '<p>' . get_the_post_thumbnail($post->ID,'full') .'</p>' . $content;

上記の場合には「full」としていますので、そのThemeによる一番大きな画像サイズになります。

画像サイズは以下参照してください。

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,array(250,100)) //サイズ指定

上記のコードの意味は以下になります。

  • thumbnail(サムネイルサイズ)
  • medium(中サイズ)
  • large(大サイズ)
  • full(フルサイズ)
  • array(上記のようにサイズ指定も可能)

一番大きな画像サイズですと、場合によっては大きすぎてRSSフィードに表示しきれずに画像としてではなく、表示としては以下のようになってしまうこともあります。

[image]・・・・[/image]抜粋記事内容◯◯◯◯◯◯50文字分や100文字分(指定抜粋文字数により異なります。)

ですので、
無難なのはthumbnailを指定すると良いと思います。

 

(方法3)

/** RSS Feeds へアイキャッチ画像を出力する
* 画像サイズは medium とする(代替サムネイルの多くが medium サイズの為)
*/
function rss_post_thumbnail($content) {
global $post;
$img = get_the_post_thumbnail($post->ID,'post-thumbnail');
if(!empty($img)){
$content = "<p>$img</p>" . $content;
}
return $content;
}

add_filter('the_excerpt_rss', 'rss_post_thumbnail');
add_filter('the_content_feed', 'rss_post_thumbnail');

上記方法3の場合のコードですと、アイキャッチ画像は表示されないわけではありませんが、

$img = get_the_post_thumbnail($post->ID,'post-thumbnail');

の部分がそのThemeによるいくつかのthumbnail(サムネイル画像)指定がありますので、その全てのサイズが表示されてしまいます。

ダッシュボードのメディア設定部分で確認可能です。

RSSフィードなどのメディア画像サイズ確認方法

 

ですのでご自身のサイトのfeedを確認してみると、<description>の中にいくつかの画像サイズが出力されているのがわかると思います。

よって表示されないわけではありませんがオススメではありません。

方法4

一番のおすすめです。

//RSSフィードにアイキャッチ画像を追加
function rss_thumbnail($content) {
global $post;
if (has_post_thumbnail($post->ID)) {
$content = '<p>' . get_the_post_thumbnail($post->ID,'thumbnail') .'</p>' . $content;
}
return $content;
}
add_filter( 'the_excerpt_rss', 'rss_thumbnail');
add_filter( 'the_content_feed', 'rss_thumbnail');

 

スポンサーリンク

上記コードですとしっかりとRSSフィードにサムネイル画像(thumbnail)指定で上記のWordPressのメディア設定部分で指定されているサムネイル画像のサイズのアイキャッチ画像がRSSフィードに出力されます。

1行目のfunction rss_post_thumbnail($content) {の関数部分はadd_filterの2つ目部分と同じにすれば何でも大丈夫です。

自分でもわかりやすくするために、

function rss_post_thumbnail($content) {

function rss_thumbnail($content) {

とrss◯◯というようにrssを付けているだけなのでadd_filterの部分と同じであれば何でも大丈夫です。

この度は、度重なるRSSフィードにアイキャッチ画像を出力表示させる方法を連続して検証も兼ねて投稿してしまい申し訳ありませんでした。 何度か実際に実施してみてプラグインを使わないで

以上、
以前より訂正及びよりベター(Better)な方法です。

スポンサーリンク
タイトルとURLをコピーしました