前提情報
WordPressの特定カテゴリの投稿記事の更新情報を以下のURLで配信しています。
https://www.hoge.com/category/information/feed
この更新情報を、上記のhttps://www.hoge.com
のサブドメインhttps://www.hoge-fuga.com
(静的webページ)で新着記事として取得・表示したいと考えています。
尚、この作業を進める上で、以下の記事を参考にしました。
https://yokochan-y2.com/get-rss-feed/#RSS-3
https://on-ze.com/archives/5062
外部ドメインのRSSを受け取るためのPHPファイルを用意する
まず初めにhttps://www.hoge.com/category/information/feed
を受け取る為のrss.phpというファイルを作成しました。
php
1<?php 2$url = "https://www.hoge.com/category/information/feed"; 3$xml = file_get_contents($url); 4header("Content-type: application/xml; charset=UTF-8"); 5print $xml; 6?>
XMLの情報を処理するスクリプトファイルを用意する
この処理が何故必要なのか、自分でもよく理解出来ていないのですが、ひとまず言われるがままにrss.jsを作成し、以下のコードを入力しました。
js
1$(function() { 2 $.ajax({ 3 url: 'rss.php', 4 xmlType: 'xml', 5 success: function(xml) { 6 var row = 0; 7 var data = []; 8 var nodeName; 9 var output = $('#rss'); 10 11 $(xml).find('item').each(function() { 12 data[row] = {}; 13 $(this).children().each(function() { 14 nodeName = $(this)[0].nodeName; 15 data[row][nodeName] = {}; 16 attributes = $(this)[0].attributes; 17 for (var i in attributes) { 18 data[row][nodeName][attributes[i].name] = attributes[i].value; 19 } 20 data[row][nodeName]['text'] = $(this).text(); 21 }); 22 row++; 23 }); 24 25 output.wrapInner('<ul></ul>'); 26 for (i in data) { 27 output.find('ul').append('<li><a href="' + data[i].link.text + '">' + data[i].title.text + '</a></li>'); 28 // console.log (data[i]); 29 } 30 } 31 }); 32});
url: 'rss.php'
は、先ほど作成したrss.phpと同階層にrss.jsを置いたので合っていると思います。var output = $('#rss');
も、htmlに埋め込むdiv要素のid属性の値は「rss」にしているので合っていると思います。
表示させるHTMLファイルを用意する
head内で『jQuery本体』と共に『rss.js』を設置
jQueryの最新バージョンをCDNで読み込み、尚且つindex.htmlと同階層にあるrss.jsも読ませました。
html
1<!-- jQuery CDN --> 2<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 3<!-- RSS feed --> 4<script src="rss.js"></script>
最後にindex.htmlのbody内で表示を試みるも...。
html
1<body> 2 3<header> 4 5<div id="rss"></div> 6 7<!--sub-header--> 8<section class="sub-header-inner"> 9<div class="container"> 10 <div class="sub-header"> 11 <h1>テキスト</h1> 12 </div> 13</div> 14</section>
- テストで表示出来れば良かったので、header要素の冒頭に
<div id="rss"></div>
を入れました。が、rssフィードの情報は表示されません。
何が原因なのか...
個人的にはrss.jsの中身で自分が書いているコードの意味を理解していない事に原因があると思うのですが、そもそもjsが読めなくて。
またindex.htmlに<div id="rss"></div>
だけで本当に表示されるのだろうか?という疑問もあります。
どなたか原因と解決策をご存知の方がいらっしゃいましたら、教えていただけますと幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。