WordPressで外部サイトのRSSを読み込みたい時、wp-include/feed.php を呼び出せば簡単という話をスタートページを作る記事で書きました。

include_once(ABSPATH . WPINC . '/feed.php');
$rss = fetch_feed($feed_url); // ★フィードのURL
	if (!is_wp_error( $rss ) ) {
	$max = $rss->get_item_quantity(10); // 表示する記事の件数
	$rss_items = $rss->get_items(0, $max);
	
	if ($max == 0) {
		echo '<li>フィードがありません</li>';
	} else {
		date_default_timezone_set('Asia/Tokyo');
		foreach ( $rss_items as $item ) {
			$item_title = $item->get_title();    // 記事タイトル
			$item_url = $item->get_permalink();  // 記事URL
			
			// 出力
			
		}
	}
}

が、記事を一度取得するとなかなか更新されません。調べてみると、デフォルトでは12時間ごとに更新されるようです。

この設定をどうにかする方法はいくつかありますが、なるべく本体をいじらないでどうにかしたいですよね。

というわけで、functions.php で対応してみることに。

add_filter( 'wp_feed_cache_transient_lifetime' , 'filter_handler' );
function filter_handler( $seconds ) {
  return 600;
}

上記の場合は、return 600; なので10分置きになります。60秒×10分です。1時間の場合は60秒×60分=3600となります。