質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

1回答

2310閲覧

WordPressのRSSフィードを、別ドメインの静的サイトで取得・表示したい

hajini10

総合スコア50

RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2020/05/16 15:50

前提情報

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>だけで本当に表示されるのだろうか?という疑問もあります。
どなたか原因と解決策をご存知の方がいらっしゃいましたら、教えていただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

「rss.js」が何かがわかりませんが、昔あったAPIを利用したクロスオリジン問題回避用のものであれば、多くのサービスが既に終了しているので使えないと思います。

PHP側でAccess-Control-Allow-Originヘッダを使えば許可したドメインで読み取ることができると思います。

【サーバーサイドアクセス制御 (CORS) - HTTP | MDN】
https://developer.mozilla.org/ja/docs/Web/HTTP/Server-Side_Access_Control

投稿2020/05/16 16:14

kei344

総合スコア69606

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問