WordPress RSS フィードにアイキャッチ画像を表示する方法

WordPress RSS フィードにアイキャッチ画像を表示する方法

WordPress で RSS フィードにアイキャッチ画像を表示する方法を紹介します。
例えば RSS リーダーの Web サービス feedly で、サイトのフィードを登録する時に表示されるサムネイルをカスタマイズしたい場合に便利な方法です。

RSS/Atom フィードでの各投稿の表示を変更

WordPress のフィードの設定は、投稿の全文を表示されるように設定されています。
本文に画像がある場合、最初に表示される画像がサムネイルの候補に選択されます、まずはこの設定を変更します。

管理画面の設定から表示設定を選択。
表示設定の「RSS/Atom フィードでの各投稿の表示」の項目を「抜粋のみを表示」に選択して保存します。

RSS フィードにアイキャッチ画像を表示

設定が反映されると 抜粋に入力されたテキストが表示されるはず。
変更内容が反映されているかを確認するには、フィード URL にアクセスします。

http://sample.com/?feed=rss
http://sample.com/?feed=rss2
http://sample.com/?feed=rdf
http://sample.com/?feed=atom

http://sample.com/は任意の URL に変更してください。
カスタムパーマリンクを使用している場合は、次の URL でアクセスします。

http://sample.com/feed/
http://sample.com/feed/rss/
http://sample.com/feed/rss2/
http://sample.com/feed/rdf/
http://sample.com/feed/atom/

抜粋の反映が確認できたら、今度は抜粋の前にアイキャッチ画像が表示されるようします。
次のコードを functions.php に追加します。

/* 【RSS】RSS フィードにアイキャッチ画像を表示 */
function rss_post_thumbnail($content) {
global $post;
if(has_post_thumbnail($post->ID)) {
$thumbnail_id = get_post_thumbnail_id($post->ID); // アイキャッチ画像の ID を取得
$thumbnail = wp_get_attachment_image_src( $thumbnail_id, 'medium' ); // medium サイズの画像情報を取得
$thumbnail_url = $thumbnail[0]; // URL を取得
$content = '<p><img src="'.$thumbnail_url.'" alt="'.get_the_title().'" /></p><p>'.$content.'</p>';
} else {
$content = '<p><img src="'.get_template_directory_uri().'/img/nowprinting.png" alt="'.get_the_title().'" /></p><p>'.$content.'</p>';
}
return $content;
}
add_filter('the_excerpt_rss','rss_post_thumbnail');
add_filter('the_content_feed','rss_post_thumbnail');

画像がなければテーマファイル内の代替画像を表示します、代替画像は各自でご用意ください。
代替画像が必要なければ else 部分の表示を削除します。

RSS フィードが更新されない時の対処法

例えば feedly などでフィードが正しく反映されているかを確認したい場合に、フィードが更新されず古いままの時があります。それは WordPress がフィードのキャッシュを保存しているからなのですが、キャッシュの保存期間はデフォルトで12時間に設定されています。12時間も待てない人は自分でキャッシュの保存期間を変更する必要があります。変更するためには WordPress のコアファイル /wp-includes/feed.php から次の行を変更します。

$feed->set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', 12 * HOUR_IN_SECONDS, $url ) );

例えば、保存期間を30分にする場合は次のように変更します。

$feed->set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', 1800, $url ) );

変更内容は WordPress のアップデートで上書きされる可能性があるので、修正が確認できたら元に戻しておくのがよいかもしれません。

まとめ

WordPress で RSS フィードにアイキャッチ画像を表示する方法を紹介しました。