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
コメントを残す