概要説明
WordPress標準機能のRSSフィードを使って別のWordPressの投稿情報を取得・表示させるカスタマイズ。標準ではRSSフィードにアイキャッチ画像(サムネイル)が無いため追加方法も合わせて掲載しています。ポータルサイトなどでご活用ください。
標準のRSSにサムネイル画像(アイキャッチの情報を追加)
functions.php
/*----------------------------------------------------
RSSフィードにアイキャッチ画像を追加
----------------------------------------------------*/
if ( !function_exists( 'rss_add_thumbnail' ) ){
function rss_add_thumbnail($content) {
global $post;
if(has_post_thumbnail($post->ID)) {
$content = get_the_post_thumbnail($post->ID) . $content;
}
return $content;
}
add_filter('the_excerpt_rss', 'rss_add_thumbnail');
add_filter('the_content_feed', 'rss_add_thumbnail');
}
こちらはRSSの配信側に設定。サムネイル画像を使用しない場合は上記対応は不要です。
RSSフィードに追加する画像のサイズ指定
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(150,150)) //任意のサイズ指定
RSSフィードのデータを受け取って表示させる
functions.php
/*----------------------------------------------------
RSSフィードの情報を取得しショートコードで呼び出す
----------------------------------------------------*/
add_shortcode("rss", shortcode_rss);
if ( !function_exists( 'shortcode_rss' ) ){
function shortcode_rss(){
$url = 'https://xxxxxxx/feed/';
$count = 3;
$feed = fetch_feed( $url );
if ( ! is_wp_error( $feed ) ) {
$maxitems = $feed->get_item_quantity( $count );
$rss_items = $feed->get_items( 0, $maxitems );
}
$rss_html = '';
if ( $maxitems > 0){
foreach ( $rss_items as $item ){
$link = esc_url( $item->get_permalink() );
$date = sprintf( __( '%s', 'my-text-domain' ), $item->get_date('Y年n月j日') );
$title = esc_html( $item->get_title() );
$content = mb_strimwidth(strip_tags($item->get_content()), 0, 200, "...","UTF-8");
$thumbnail_img = '';
if(preg_match_all('/<img.*?src=(["\'])(.+?)\1.*?>/i',$item->get_content(),$img_array)){
$site_img = $img_array[2][0];
}
if ( $site_img != '' ) {
$site_img = '<img src="' . $site_img. '">';
}
$rss_html .= <<<EOS
<div class="feed_item">
{$site_img}
<a href="{$link}" rel="nofollow" ><h2>{$date} : {$title}</h2></a>
<p>{$content}</p>
</div>
EOS;
}
}
echo $rss_html;
}
}
[rss] で呼び出して任意の場所で表示ができます



