wordpress本体に含まれているSimplePieを使って、RSSフィードを取得して表示するサンプルを書き留めます。これを拡張すれば簡単にアンテナサイトを作成できそうです。

以下のサンプルでは、最新5件の記事のタイトル、画像、投稿日時、カテゴリーを順に表示します。画像は一番最初に見つけた画像を表示します。

スポンサーリンク

ソースコード


<?php
function show_rss() {
	include_once( ABSPATH . WPINC . '/feed.php' );

	// デフォルトで12時間キャッシュしているため、中々更新されないからキャッシュ時間を1時間に変更
	add_filter( 'wp_feed_cache_transient_lifetime' , 'return_1hour' );

	$url = '取得したいサイトのフィード';
	$rss = fetch_feed( $url );

	remove_filter( 'wp_feed_cache_transient_lifetime' , 'return_1hour' );
	$maxitems = 0;

	if ( !is_wp_error( $rss ) ) {
		// 最新5件のフィードを取得
		$maxitems = $rss->get_item_quantity( 5 );
		$rss_items = $rss->get_items( 0, $maxitems );
	}

	echo '<ul>';
	if ( $maxitems == 0 ) {
		echo '<li>No items</li>';
	}
	else {
		foreach ( $rss_items as $item ) {
			echo '<li><a href="' . esc_url( $item->get_permalink() ) . '">';
			echo '<h2>' . esc_html( $item->get_title() ) . '</h2>';
			// 画像があれば、アドレスを取得して表示する
			if ( preg_match_all( '/src="([^"]*)"/', $item->get_content(), $image ) ) {
				if ($image[1]) {
					echo '<img src="' . esc_url( $image[1][0] ) . '" alt="no title"/>';
				}
			}
			echo '</a>';
			// 投稿した日時を表示
			echo $item->get_date( 'Y-m-d H:i:s' );

			// カテゴリーを表示
			$categorys = $item->get_categories();
			foreach ( $categorys as $category ) {
				echo esc_html( $category->get_label() );
			}
			echo '</li>';
		}
	}
	echo '</ul>';
}

function return_1hour( $seconds ) {
	return 3600;
}

?>

wordpress codexでの解説は以下になります。 関数リファレンス/fetch feed