アンテナサイト風?WordPress『fetch_feed』&配列要素指定で、複数サイトRSS取得とパラメーターでサイトを切り替える方法

      2793文字

今回は、WPセットアップのお仕事で使おうとしたけど、結局使わなかったので、コラム題材になったアイデアを紹介します(rest-apiで取ったから)。
他サイトの更新情報をRSSから取ってくる方法で、『複数サイトRSS取得とパラメーターでサイトを切り替える』という、アンテナサイトっぽい機能も追加しています。さっそく、実装方法や実際の動作例を確認していきましょう。

WordPressでRSS feedを取る方法

この記事アイデアをやるまえに、管理人が少し扱ってみたものです。参考までに。

(当サイト過去記事)他ブログのRSSを取ってきて連携

今回の記事では『fetch_feed』を使いますが、以前も取り上げています。この時は単純にお知らせや更新情報をWPで表示するだけでした。シンプルなものが欲しいときはこちらをどうぞ。

プラグインを使う(例:RSS Antenna)


上記の例は1サイトだけ取ってくる感じでしたが、プラグインRSS Antennaは、よくあるアンテナサイトのように、複数のサイトからfeedを取ってくることができます。プラグインということもあり、管理画面から件数や取得サイトなども設定できて便利です。

ただし、公式とはいえ、少し古い&最近のWPバージョンに対してアップデートがされていない点は注意しましょう(使った感じ、WPバージョン6.0でも大丈夫そうでした)。

今回の『fetch_feed』RSS取得をやる前の下準備

(テンプレート外で使用する場合)wp-blog-headerを読み込む


今回、固定ページ・投稿ページ・テンプレート以外の『/test/rss.php』というファイルを作って、そこで表示テストしました。このファイルはWPのテンプレートにはないので、独自ファンクションを使うためには『wp-blog-header』を読み込んでおきます。

これを読み込まないでfetch_feedや変数参照したり、wp-blog-headerの前にwp関連の変数・ファンクションを参照すると、エラーになるので注意します。

取得先がWPの場合、取得先本体の『RSS/Atom フィードで表示する最新の投稿数』設定をする


fetch_feedで取ってくるときは、件数も自由に設定できますが、事前に取得先WP管理画面で『RSS/Atom フィードで表示する最新の投稿数』を設定しておきます。

これがデフォルトでは10件に設定されており、fetch_feedで30件とかに増やしても、この件数以上は記事が出てこないからです。

WordPress『fetch_feed』&配列要素指定で、複数サイトRSS取得とパラメーターでサイトを切り替える方法

コード例とポイント

github gistにのせました。上記にはwp-blog-headerが書いていないので、テンプレート外でやる場合は読み込みます。
$argsの配列には、管理人が運営しているサイト3つ(このサイト,SSF,ネットで音楽アレンジサービスblog)のフィードが入っていて、ここに追加して増やせます。

『getsite』というのがパラメーターになっていて、これにより『配列の何番目のフィードを取るか』を指定します($args[3]と$args[4]は空なので、記事がでません。RSS取得先が増えた場合は使います。)。
で、これをfetch_feedに渡します。

『array_sliceで0~10件』までのようになっているものは、ページネーションで使用します(ここのページネーションは仮です。wp-query連動のページネーションが使えないので自作)

件数表示についてはPHPの『 count()』で、配列に何個の記事が入っているかをカウントします。

そして、foreachでループを回して記事を表示していきます。ここら辺はhtmlなどが混在するため、条件分岐が波括弧ではなくコロン構文『if ( 〇〇 ) :~endif;みたいなやつ』になっていますのでご注意ください。

表示例、および実際の動作確認


では早速、動作を確認してみましょう。表示はこんな感じで、上部にはパラメータをつけるリンクが。これはCSSでボタンみたいにしてもよいです。パラメータ無し(リセット用)のほか、getsite=1~3までのパラメータがつくリンクを設置。


パラメータで絞り込んでいない状態では、最初の$argsに設定した複数のサイトが混在(日付ソート)して表示されます。


上部のパラメーター付きリンクをクリックすることで、RSSを取得するサイトが絞り込めました。写真はSSFの記事だけ表示しています。

まだまだ変更する点はありますが、『とりあえずこんな感じ』というのをチェックされたい場合は、以下のリンクから捜査してみてください。

あとがき・まとめ

  • WPのfetch_feedでは、配列に複数のサイトのRSSを入れることにより、複数サイトを混在して取得できる
  • urlパラメーターを使って、絞り込み用に『配列の何番目』を指定することも可能だった
  • array_slice(配列切り取り)やcount(配列要素数カウント)などの配列ファンクションを組み合わせて、機能をパワーアップできる

まとめると、このような感じでしょうか。管理人的にはアンテナサイトはやらないと思いますが、『事業グループや企画内に、ドメインをまたぐ複数のサイトがあり、更新情報をまとめたい』といった場合は便利かと思いますので、ぜひご検討ください。

WordPressサイト制作&リニューアル・機能開発サービス | アトリエSS


【カテゴリ】 - wpサイト制作事例
【タグ】 - , , ,

  関連記事

【WordPress】人気記事表示のしかた~PVカウント・フィールド格納&ソート(ログイン者カウントなし)
【WordPressテーマ改造】カスタマイザープレビューが表示されなくなった件の対応(ファンクション名変更・twenty seventeen)
サイト制作事例~バンド・音楽情報サイト・ブログをオウンドメディアサイトに(ミュージックサロンp+luckさま)
【WordPressサイト製作】レスポンシブ左右ボックスとaudioで、音楽素材サイトを作る
サイト制作お仕事事例~WPで仮想通貨投資情報サイトを(justiceクリプトカレンシーズ・AID LLCさま)
WPログアウト機能『wp-login.php?action=logout』と『wp_logout_url』の違い~後者はwpnonceで一発ログアウト
【静的HTML→WordPressリニューアル】同じデザインでWPにするときの注意ポイント
WPカスタムフィールド~記事にthe_metaでフィールド出力&評価つける・get_post_metaとの違い
別ディレクトリでの記事の管理・表示を、1つのWordPressを使いまわして対応する方法(プラグイン無しカスタム投稿・wp-blog-header.php)
WordPressのログイン・ログアウト・権限システムを理解・カスタマイズして、『会員がコンテンツ読めるサイト』を作ろう
【wordpress制作事例】自社著作権フリー音楽サイト、ロゴ付きおしゃれ1カラムデザインにリニューアル
WordPressのカスタムフィールド値で記事を絞り込み・検索するサイトの作り方・一部始終を徹底解説