以前、IFTTTを使ったTwitterとの連携を紹介しました。
ここから、WordPressの標準フィードだとアイキャッチ画像が表示されないとの相談をうけ、フィード側に必要な対応もまとめておきます。
mediaタグがデフォルトには含まれないのでカスタムフィードを使う必要があるのです。
フィードテンプレートをコピーしてくる
/wp-includes/feed-rss2.php
このファイルをテーマフォルダにフィードテンプレートをコピーしてきます。
先のテンプレートを読み込ませる
おなじみの、functions.php にこの記述を追加です。
remove_filter('do_feed_rss2', 'do_feed_rss2', 10);
function custom_feed_rss2(){
$template_file = '/feed-rss2.php';
load_template(get_template_directory() . $template_file);
}
add_action('do_feed_rss2', 'custom_feed_rss2', 10);
rssフィードの読み込み時にフックさせる処理です。これでコピーしてきた方のテンプレートを読み込みにいきます。
mediaタグを追記
冒頭のnamespaceにmedia定義を追加し、
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:media="http://search.yahoo.com/mrss/"
<?php
/**
* Fires at the end of the RSS root to add namespaces.
*
* @since 2.0.0
*/
do_action( 'rss2_ns' );
?>
>
カテゴリの書き出しや、guidの書き出しの間辺りに、メディアタグを追加します。
<dc:creator><![CDATA[<?php the_author(); ?>]]></dc:creator>
<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
<?php the_category_rss('rss2'); ?>
<?php
$image_id = get_post_thumbnail_id();
$image_url = wp_get_attachment_image_src($image_id, 'large');
if ($image_url) :
?>
<media:content medium="image" url="<?php echo $image_url[0]; ?>" width="<?php echo $image_url[1]; ?>" height="<?php echo $image_url[2]; ?>"/>
<?php endif; ?>
<guid isPermaLink="false"><?php the_guid(); ?></guid>
<?php if (get_option('rss_use_excerpt')) : ?>
サイズは large にしてますが、お好みで。
フィードの構文チェック
https://validator.w3.org/feed/
ここでチェックできちゃいます。
こんな感じです。