RSSフィードを使ってWordPress同士のコンテンツを共有

概要説明

WordPress標準機能のRSSフィードを使って別のWordPressの投稿情報を取得・表示させるカスタマイズ。標準では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] で呼び出して任意の場所で表示ができます

関連機能

  1. WordPressページ表示までの処理時間を管理者にだけ表示させる

  2. 管理画面ヘッダーメニューの「投稿を表示」クリック時に別タブにて表示できるようにする ( target=”_blank” )

  3. 新規記事作成時の初期値設定

サイドバー

よく使うカスタマイズ

最近の記事

アニメの名言集

勝ったにせよ負けたにせよ
振り返ってこそ経験ってのは活きるんだ

僕のヒーローアカデミア
by オールマイト

Profile

PAGE TOP
Amazon プライム対象