RSSを使って別のWordPress、ブログの記事一覧を表示させる

wordpress

現在使っているWordpressに別のWordpress、またブログの記事をRSSで取得して表示させる方法です。
WordPressではfetch_feedという関数があるのでこれを使います。

表示させたい所に下記を記述してください。

<?php
  include_once(ABSPATH . WPINC . '/feed.php');
  $rss_url = array(
    'RSSのURL'
  );

  $rss = fetch_feed($rss_url);
  if (!is_wp_error($rss)){
    $maxitems = $rss->get_item_quantity(4); // 表示件数
    $rss_items = $rss->get_items(0, $maxitems);
  }

  foreach($rss_items as $key => $value){
    
    // 最初の画像をサムネイルとして取り出す
    $first_img = '';
    if ( preg_match( '/<img.+?src=[\'"]([^\'"]+?)[\'"].*?>/msi', $value->get_content(), $matches ) ) {
      $first_img = $matches[1];
    }

    // 本文の最初の100文字だけ抜粋する
    $content = $value->get_content();
    $content = mb_substr( strip_tags( $content ),0,100 );

    echo '
    <li style="margin-bottom: 20px;">
      <img src="'.esc_attr( $first_img ).'" width="100" height="100"> // サムネイル
      <a href="'.$value->get_permalink().'" target="_blank">'.$value->get_title().'</a>  // タイトルとリンク
      <p>'.$value->get_date( 'Y.m.d' ).'</p>  // 日付
      <p>'.$content.'...</p> // 抜粋
    </li>
    ';
  }
?>

get_item_quantityで取得する記事の数を変更できます。
$value->get_contentをそのまま書くと記事の本文がすべて表示されるので、mb_substrで最初の100文字だけ抜粋しています。
100の部分を変えることで文字数を変更できます。