概要説明
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] で呼び出して任意の場所で表示ができます