外部サイトの更新情報を自分のサイトに表示してみたい。
「RSSを使って表示する」ってことができるらしい。
やれるというなら、やってみたい。
やってみよう。
外部サイトのRSSの取得
外部サイトのRSSは大体の場合「https://ドメイン/feed」。
このサイトの場合なら「https://wordpress.0hs.org/feed」。
「fetch_feed」関数で外部サイトの更新情報を表示
「fetch_feed」関数を使うと外部サイトのRSSを取得できるらしい。
WordPress Codex 日本語版の関数リファレンス/fetch feedから引用し少し見やすくしたコードが↓
以下のサンプルのソースコードでは、既存の外部の RSS フィードを取得して、最新5件を表示させることができます。
<h2><?php _e( 'Recent news from Some-Other Blog:', 'my-text-domain' ); ?></h2><!--<h2></h2>は状況に応じて変える。「Recent news from Some-Other Blog」は日本語に訳すと「いくつかの他のブログからの最近のニュース:」-->
<?php // RSS フィードを取得します。
include_once( ABSPATH . WPINC . '/feed.php' );
// 以下で、指定されたフィードから SimplePie のオブジェクトを取得します。
// なお、この部分について array 関数を使い、配列にすれば、複数の RSS フィードを同時に取得して、複数の RSS フィードを1つにまとめて時系列に並べて表示することもできます。
$rss = fetch_feed( 'http://example.com/rss/feed/goes/here' );
// 「http://example.com/rss/feed/goes/here」部分に取得したいフィードを入力すると、SimplePieによってRSSが表示されます。
$maxitems = 0;
if ( ! is_wp_error( $rss ) ) : // ちゃんとフィードが生成されているかをチェックします。
$maxitems = $rss->get_item_quantity( 5 );// すべてのフィードから最新5件を出力します。
$rss_items = $rss->get_items( 0, $maxitems );
// 0件から始めて指定した件数までの配列を生成します。
endif;
?>
<ul>
<?php if ( $maxitems == 0 ) : ?>
<li><?php _e( 'No items', 'my-text-domain' ); ?></li>
<?php else : ?>
<?php // Loop through each feed item and display each item as a hyperlink. ?>
<?php foreach ( $rss_items as $item ) : ?>
<li>
<a href="<?php echo esc_url( $item->get_permalink() ); ?>"
title="<?php printf( __( 'Posted %s', 'my-text-domain' ), $item->get_date('j F Y | g:i a') ); ?>">
<?php echo esc_html( $item->get_title() ); ?>
</a>
</li>
<?php endforeach; ?>
<?php endif; ?>
</ul>
冒頭の<h2></h2>は状況に応じて変える。
また、「Recent news from Some-Other Blog」は日本語に訳すと「いくつかの他のブログからの最近のニュース:」なので、この部分は好きな文章に書き換える。
このコードを記載した、新しいPHPファイルを作る。
PHPファイルの名前は仮に「out-rss.php」にする。
このファイルを、使用中の子テーマのフォルダ内にアップロードする。
ちなみに下はネットで見つけたコード。
今回は使用しないけど、いつかどこかで試したい。
比較コード WordPressで外部サイトのRSS情報を取得して更新情報を表示させる方法 | Webマガジン | 株式会社296 | 川崎のホームページ制作会社
<?php
//WrodPressのfeed.phpの呼び出し
include_once ABSPATH . WPINC . '/feed.php';
// 目的のFeedを取得
$feed = fetch_feed('http://commune.web-creator-world.com/?feed');
if (is_wp_error($feed)) {
$maxitems = 0;
} else {
//5件取得
$maxitems = $feed->get_item_quantity(5);
$items = $feed->get_items(0, $maxitems);
}
?>
<h4>
<a href="http://commune.web-creator-world.com/">Web Create Commune 新着情報</a>
</h4>
<?php if ($maxitems): // データあったら表示 ?>
<ul>
<?php foreach ($items as $item): ?>
<li>
<span class="date">
<?php echo $item->get_date('Y.m.d'); ?>
</span>
<br>
<a href="<?php echo $item->get_permalink(); ?>">
<span class="title">
<?php echo mb_strimwidth($item->get_title(), 0, 60, '…'); ?>
</span>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php else: // データ無しの場合 ?>
<!-- データないよ -->
<?php endif; ?>
複数のサイトから取得する場合
$feedに代入するURIを配列で複数にしてあげます。
$feed = fetch_feed(array(
'https://296.co.jp/feed',
'https://appartement.in/feed',
'https://studio.appartement.in/feed'
));
PHPファイルを呼び出すショートコードを記載
PHPファイルを呼び出すショートコードを表示させたい場所に記載する。
[call_php file='PHPファイル名']
「out-rss.php」を呼び出す場合↓
[call_php file='out-rss']
試しに姉妹サイト「https://freesoft.0hs.org/」の更新情報を呼び出してみる。
姉妹サイトの更新情報
- docomoの無料Wi-Fiの接続で一寸苦労した
- Googleマップをダウンロードしてオフラインで使ってみよう
- web小説をオフラインで読もう
- レジストリのバックアップと復旧方法-Windows11
- 【Webエクスペリエンスのカスタマイズ】の通知をOFFにしたい-Windows11
無事表示できました。
ショートコードって便利だ。
コメント