WordPressにnoteの情報を表示する

2026.01.13 10:00
2026.01.22 14:45
WordPressにnoteの情報を表示する

WordPressのトップページや専用ページの一部に、「noteの最新記事一覧」を表示したくなりました。

埋め込み(iframe)でも実現できそうですが、今回は RSSを取得してPHPで配列化し、表示はページごとに作り込むという方針でやってみました。
ページによって見せ方が変わるため、まずは「データだけ取れる形」を用意しておくと後から調整しやすそうだと思ったためです。

まずはRSSのURLを確認します

noteはRSSを取得できます。アカウントのRSSは以下の形式です。

https://note.com/アカウント/rss

(今回はまずシンプルにこのURLを使います。マガジンRSSを使って出す記事をコントロールする方法もあります。)

RSS取得用のコードを置く場所を作ります

functions.php に全部書くと後から見返しにくくなるので、テーマ内でファイルを分けることにしました。テーマ直下に inc/rss/ フォルダを作成し、RSS取得関連はそこにまとめます。

自分の場合は「トップは4件」「一覧ページは20件」といった出し分けをしたかったので、取得部分を共通化しておくのが目的でした。

  • inc/rss/:RSS関連の処理(取得・配列化)
  • 表示側:各ページやテンプレート側で配列をループして表示
<?php
if (!defined('ABSPATH')) exit;

if (!function_exists('note_rss_to_array')) {

  /**
   * note RSS を取得して配列化して返す
   *
   * @param string $feed_url note RSS URL
   * @param int    $count    取得件数
   * @return array|\WP_Error
   */
  function note_rss_to_array(string $feed_url, int $count = 10)
  {
    $feed_url = trim($feed_url);
    if ($feed_url === '') {
      return new \WP_Error('note_rss_empty_url', 'RSS URL is empty.');
    }

    if (!function_exists('fetch_feed')) {
      require_once ABSPATH . WPINC . '/feed.php';
    }

    $feed = fetch_feed($feed_url);
    if (is_wp_error($feed)) {
      return $feed;
    }

    $count = max(1, $count);
    $items = $feed->get_items(0, $count);
    if (empty($items)) {
      return [];
    }

    $result = [];

    foreach ($items as $item) {
      $title = (string) $item->get_title();
      $link  = (string) $item->get_link();
      $date_iso = (string) $item->get_date('c');
      $date_ymd = (string) $item->get_date('Y-m-d');

      $desc_raw  = (string) $item->get_description();
      $desc_text = wp_strip_all_tags($desc_raw);

      $image = '';
      $enc = $item->get_enclosure();
      if ($enc && method_exists($enc, 'get_link')) {
        $image = (string) $enc->get_link();
      }
      if ($image === '') {
        $tags = $item->get_item_tags('http://search.yahoo.com/mrss/', 'content');
        if (!empty($tags[0]['attribs']['']['url'])) {
          $image = (string) $tags[0]['attribs']['']['url'];
        }
      }

      $result[] = [
        'title'       => $title,
        'link'        => $link,
        'date_iso'    => $date_iso,
        'date_ymd'    => $date_ymd,
        'description' => $desc_text,
        'image'       => $image,
      ];
    }

    return $result;
  }
}

functions.php から読み込む

RSSを配列化する処理は inc/rss/note.php に分けたので、次は functions.php から読み込むようにします。(functions.php に全部書くと後で見返すのがつらくなるので、今回は分割方針にしました。)

/**
 * RSS読み込み
 */
require_once get_template_directory() . '/inc/rss/note.php';

使用時

使うときは表示したいテンプレート側(トップの一部や一覧ページなど)で、取得関数を呼ぶだけです。

$items = note_rss_to_array('RSSのURL', 5);

シンプルですね!
これで「RSSを取る → 配列にする → ページ側で好きに表示する」土台ができました。
あとは各ページのデザインに合わせて表示を作っていくだけです。

今回は以上です!