WordPressにnoteの情報を表示する
2026.01.13 10:00
2026.01.22 14:45
WordPressのトップページや専用ページの一部に、「noteの最新記事一覧」を表示したくなりました。
埋め込み(iframe)でも実現できそうですが、今回は RSSを取得してPHPで配列化し、表示はページごとに作り込むという方針でやってみました。
ページによって見せ方が変わるため、まずは「データだけ取れる形」を用意しておくと後から調整しやすそうだと思ったためです。
まずはRSSのURLを確認します
noteはRSSを取得できます。アカウントの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を取る → 配列にする → ページ側で好きに表示する」土台ができました。
あとは各ページのデザインに合わせて表示を作っていくだけです。
今回は以上です!