ワードプレスのRSSにサムネイル画像を追加する
ワードプレスのRSS情報から、ホームページにブログの更新情報を掲載することがよくあります。
その際に、サムネイル画像も表示したい場合があります。
しかし、ワードプレスはRSSにサムネイル画像が追加されません。
そこで、ワードプレスのRSSにサムネイル画像を追加する方法について調べてみました。
RSSの「description」部分に画像を追加する
いつものようにググって調べてみると、wordplessには標準でサムネイル画像を追加するための手順がありました。
functions.phpの一番下に以下のコードを貼り付けるとRSSに画像が付加されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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'); add_filter( 'wp_calculate_image_srcset_meta', '__return_null' ); |
あれ?画像の縮尺が1:1になっていない!?
当然といえば当然ですが、この方法だと投稿時そのままの画像がRSSに反映されます。用途としてはRSSから記事の一覧表示を行いたいので、サムネイル画像は縮尺が1:1(正方形)になっていてほしいものです。
事実、ワードプレスでの記事一覧表示のサムネイル画像は、縮尺が1:1になっています。
そこでサムネイル画像を表示する方法を調べてみました。
それがこちらです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function rss_post_thumbnail($content) { global $post; if(has_post_thumbnail($post->ID)) { $content = '<p>' . the_post_thumbnail('thumbnail') . '</p>' . $content; } return $content; } add_filter('the_excerpt_rss', 'rss_post_thumbnail'); add_filter('the_content_feed', 'rss_post_thumbnail'); add_filter( 'wp_calculate_image_srcset_meta', '__return_null' ); |
わかりますでしょうか?
get_post_thumbnail_id($post->ID)をthe_post_thumbnail(‘thumbnail’)に変更しました。
これで、縮尺1:1にトリミングした画像が表示されるようになります。
もうちょっと欲を出して、情報を取りやすく整理してみました。
目的としてはこれで達成できているのですが、取り出し側の手間を考えて、もうちょっと調整してみました。
それがこちらです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function rss_post_thumbnail($content) { global $post; $imgurl = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'thumbnail'); if(has_post_thumbnail($post->ID)) { $content = '<imgurl>' . $imgurl[0] . '</imgurl><text>' . $content . '</text>'; } return $content; } add_filter('the_excerpt_rss', 'rss_post_thumbnail'); add_filter('the_content_feed', 'rss_post_thumbnail'); add_filter('wp_calculate_image_srcset_meta', '__return_null'); |
先の2つは、<img>タグをそのまま抜き取っていますが、これは画像のURLだけを抜き取ります。
wp_get_attachment_image_src()関数は、画像のURL、サイズなどの情報を抜き取ってくれます。
パラメータの’thumbnail’は、元画像でなく、サムネイル画像を取得するという意味です。ほかにも’medium’(中サイズ),’large’(大サイズ)’full’(原本サイズ)があります。
ちなみに、ワードプレスの「設定」→「メディア」からこれらの具体的なサイズを指定することができます。
<imgurl>、<text>タグはオリジナルタグですが、RSS取得をする際に、画像部分と本文部分を分割する必要があります。その際にしるしとしてタグがあるとべんりです。
※RSS取得するツールに、独自タグの使用ができない場合は、記述しないでください。
できる方ならば力業でワードプレスのデータベースから直接新着記事を取り出す方法もありますが、RSSを利用したほうが手軽です。
あと、ついで事ですがワードプレスはデフォルトでは、RSSに画像、文章が全文掲載されます。それはブログパクリをされ易くしています。
設定→表示設定 から、「RSS/Atom フィードでの各投稿の表示」を「抜粋のみを表示」に変更しておくと、RSSからのブログパクリはできなくなります。
RSSはうまく使っていきましょう。