他ブログのRSSの最新情報をサムネイル付きで表示(WordPress)

今回自分の運営しているwordpressサイトのRSSを取得して最新情報(サムネイル付)一覧を表示したので備忘録としてまとめます。

サムネイル付きというのが案外難しくて、どうもSSL化した無料SSL証明書「Let’s Encrypt」が原因らしいという記事も出回っていましたが、今回表示するサイトも取得したいサイトもLet’s EncryptのSSLを使用していましたが表示出来ました。

やったこと

  1. RSSを取得したいサイトのrssfeedにサムネイルurlを吐き出すようにさせた
  2. 表示したいサイトに取得するタグを打った
  3. 完了

RSSを取得したいサイトのrssfeedにサムネイルurlを吐き出すようにさせた

次のタグをfunction.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().’/common/images/noimg.jpg” 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’);

表示したいサイトに取得するタグを打った

<div id=”toprss”>
<?php
include_once(ABSPATH . WPINC . ‘/feed.php’);
$rss = fetch_feed(array(
‘RSSのURL’
));
if (!is_wp_error( $rss ) ) :
$rss->set_item_limit(5);
$rss->set_cache_duration(1800);
$rss->init();
$maxitems = $rss->get_item_quantity(5);
$rss_items = $rss->get_items(0, $maxitems);
date_default_timezone_set(‘Asia/Tokyo’);
endif;
?>
<ul class=”other_rss”>
<?php if ($maxitems == 0) echo ‘<li>更新情報がありません。</li>’;
else
foreach ( $rss_items as $item ) : ?>
<li>
<?php
echo ‘<a href=”‘ . esc_url( $item->get_permalink() ) . ‘”>’;
if ( preg_match_all( ‘/src=”([^”]*)”/’, $item->get_content(), $image ) ) {
if ($image[1]) {
echo ‘<img src=”‘ . esc_url( $image[1][0] ) . ‘” alt=”no title”/>’;
}
}
echo ‘</a>’; ?><br>
<?php echo $item->get_date(“Y年n月j日”); ?><br><a href='<?php echo $item->get_permalink(); ?>’ target=”_blank”>
<?php echo $item->get_title(); ?></a>
</li>
<?php endforeach; ?>
</ul></div>

以上です。

一応「$rss->set_cache_duration(1800);」で60秒×α分=1800(今回α=30分)で、通常12時間ほどかかるキャッシュを早めに取得するようにしているのがミソです。
それでももし取得に時間がかかっていると感じた場合はwp-includes/feed.phpを開き

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

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

に変えてみてください。

【注意】Google+の機能を2019/4/7までにHP上から撤去してください

Googleより先日メールが来ました。
内容としてはGoogle+の終了に伴い、HP上からGoogle+に関連するコードを削除してください、とのことでした。

おそらくSNS関連のツールだと思いますが、いくつか運営しているサイトのチェックをしないといけないので大変です。
皆様も自分のHPやブログをお持ちの方で下記の機能をつけている方はお気をつけください。

ボタン(などが含ま+1ボタン 、 フォローボタン 、 ハングアウトボタン 、およびシェアボタン )、 バッジ 、およびインタラクティブな投稿