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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

RSS

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

WordPress

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

3回答

2328閲覧

CakephpでWordpressのRSS情報を拾う方法

tomona

総合スコア37

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

RSS

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

WordPress

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2018/06/24 11:25

編集2018/07/02 10:33

Cakephpで企業HPを作っているのですが、プレスリリースをWordpressで作成したいと思っています。
そこで、Wordpressにて投稿した情報をCakephpで表示させたいのですがどのようにすれば可能でしょうか。

表示させる情報はまず、最新記事上位10件の「投稿日」「タイトル」です。そして「タイトル」をクリックすると本文が表示されるようにしたいと考えています。
「投稿日」及び「タイトル」についてはwp_postテーブルから取得すれば良いように思いますが、本文情報をどのように表示するか悩んでおります。
単純にguidフィールドのURLに飛ばした場合、WordPressに飛ばされますが、CakePHPで作ったデザインと揃わなくなってしまいます。
wp_postテーブルから本文を取得した場合、WordPressの関数等が入っている場合があり、CakePHPで表示した場合、この関数が反映されなくなってしまいます。
以下、アドバイスいただければ幸いです。

【スペック】
CakePHP ⇒ 3.6
WordPress ⇒ 4.9.6

当方で調査した案としては以下のものがあります。

案1 CakephpでWordpressで作成したRSS情報を拾って表示する。
【課題】
0. Wordpressで作成したRSS情報がデータベース上のどのテーブルのどのフィールドに格納されているか不明。
0. CakephpでRSS情報を拾う場合、RssHelperというものがありますが非推奨になっており、代替方法が不明。

案2 記事だけwp_postsのguidに飛ばして表示する。
【課題】
0. ヘッダーとフッターを引き継ぐことができない。
0. 逆にCakephp側にguidのHTML情報を表示させることは可能でしょうか??

そのほかアイデアがあればご教示いただけますと幸いです。

宜しくお願い致します。

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

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

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

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

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

trewa-nek9585

2018/06/24 12:54

CakePHPにもバージョンがあると思いますが、どのバージョンのCakePHPでしょうか?
guest

回答3

0

RssHelperはRSSフィードを「生成」するためのものですね。
今回はWordPressが生成したフィードの内容をCakePHPで取り扱いたいということのようなので、file_get_contents()などを使用してRSSフィードのXMLを取得した後、SimpleXMLElementなどを使用してそれをパースすれば、お望みのことが実現できるかと思います。
以下は実装のイメージです。

php

1$rssFeedUrl = "https://〜";// WordPressの生成したRSSフィードのURL 2$xml = file_get_contents($rssFeedUrl); 3$xmlElement = new SimpleXMLElement($xml); 4 5var_dump($xmlElement);// この段階でPHPで利用できる形になっています

投稿2018/06/25 06:51

mooey

総合スコア200

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

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

tomona

2018/07/02 10:20

ご回答ありがとうございます。 いろいろと試したのですが実現には至っておりません。以下確認させて頂けますでしょうか。 まずSimpleXMLElementを実行しようとすると「Class 'App\Controller\SimpleXMLElement' not found」といわれてしまいます。 また、WordPressの生成したRSSフィードのURLとは公式ドキュメント(http://wpdocs.osdn.jp/WordPress_%E3%83%95%E3%82%A3%E3%83%BC%E3%83%89%E9%85%8D%E4%BF%A1)に記載のあるフィード URLのことを指していますか?
guest

0

ベストアンサー

興味があったので、自分のワードプレスブログのRSSフィードを読み込んで実装してみました。

作成したファイルは、
app/src/Controller/FetchRssController.php
app/src/Template/FetchRss/index.ctp

の2つ。

XMLがちゃんと取得できるかログチェックに使ったファイルが

app/logs/error.log

の1つ、です。

【FetchRssController.php】↓

PHP

1<?php 2 3namespace App\Controller; 4 5use App\Controller\AppController; 6 7/** 8 * FetchRss Controller 9 * 10 */ 11class FetchRssController extends AppController 12{ 13 /** 14 * Index method 15 * WordPressのRSSを取得して表示する 16 * 17 * @param void 18 * @return \Cake\Http\Response|void 19 */ 20 public function index() 21 { 22 $rssFeedUrl =('https://www.juku90.com/feed/'); 23 $xml = file_get_contents($rssFeedUrl); 24 $this->log($xml); // デバッグ用 25 $xmlObject = simplexml_load_string($xml); 26 $this->log($xmlObject->channel->title); // デバッグ用 27 $this->set(compact('xmlObject')); 28 } 29}

【index.ctp】↓

PHP

1<style> 2 .header1 { 3 font-size: 26px; 4 } 5 .header2 { 6 font-size: 20px; 7 } 8</style> 9 10<h1 class="header1">RSS取得した結果</h1> 11<?php 12foreach ($xmlObject->channel->item as $item) { 13 echo '<h2 class="header2">' . (string)$item->title . '</h2>'; 14 echo '<p>' . (string)$item->description; 15 echo '<br />'; 16 echo '<a href="' . (string)$item->link . '" target="_blank" />記事の詳細はこちら</a>'; 17 echo '</p>'; 18 echo '<hr />'; 19} 20

表示はこうなりました↓
CakephpでWordpressのRSS情報を拾う方法

FetchRssController.php 内の「デバッグ用」という行は確認のために使いました。コントローラー内で「$this->log($hoge);」と書くと、変数$hogeの中身がエラーログに記録されるのでデバッグに便利です。

ちなみに今回のですとログは以下のようになりました。

【error.log】↓

PHP

12018-07-08 14:02:03 Error: <?xml version="1.0" encoding="UTF-8"?><rss version="2.0" 2 xmlns:content="http://purl.org/rss/1.0/modules/content/" 3 xmlns:wfw="http://wellformedweb.org/CommentAPI/" 4 xmlns:dc="http://purl.org/dc/elements/1.1/" 5 xmlns:atom="http://www.w3.org/2005/Atom" 6 xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 7 xmlns:slash="http://purl.org/rss/1.0/modules/slash/" 8 > 9 10<channel> 11 <title>かみおか日記</title> 12 <atom:link href="https://www.juku90.com/feed/" rel="self" type="application/rss+xml" /> 13 <link>https://www.juku90.com</link> 14 <description>愛知県稲沢市のホームページおじさん(上岡)の日記です。</description> 15 <lastBuildDate>Wed, 27 Jun 2018 07:57:52 +0000</lastBuildDate> 16 <language>ja</language> 17 <sy:updatePeriod>hourly</sy:updatePeriod> 18 <sy:updateFrequency>1</sy:updateFrequency> 19 20 <item> 21 <title>ついに稲沢にもスターバックスの路面店が上陸っ!</title> 22 <link>https://www.juku90.com/staba_inazawa/</link> 23 <comments>https://www.juku90.com/staba_inazawa/#respond</comments> 24 <pubDate>Wed, 27 Jun 2018 07:56:57 +0000</pubDate> 25 <dc:creator><![CDATA[管理人]]></dc:creator> 26 <category><![CDATA[稲沢市情報]]></category> 27 28 <guid isPermaLink="false">https://www.juku90.com/?p=4361</guid> 29 <description><![CDATA[さくらぎ歯科の隣、何ができるんだろ? ヨシヅヤ新稲沢店の前の通りに、私がお世話になっているさくらぎ歯科さんがあります。さくらぎ歯科は予防医療的な考え方をしてくれる頼りになる歯医者さんで、3か月に一度定期健診に行っています...]]></description> 30 <wfw:commentRss>https://www.juku90.com/staba_inazawa/feed/</wfw:commentRss> 31 <slash:comments>0</slash:comments> 32 </item> 33 <item> 34 <title>6年間の思い出がいっぱい詰まったランドセル。捨てる?それとも…</title> 35 <link>https://www.juku90.com/randsel_remake/</link> 36 <comments>https://www.juku90.com/randsel_remake/#respond</comments> 37 <pubDate>Tue, 29 May 2018 01:24:07 +0000</pubDate> 38 <dc:creator><![CDATA[管理人]]></dc:creator> 39 <category><![CDATA[トレンド情報]]></category> 40 41 <guid isPermaLink="false">https://www.juku90.com/?p=4345</guid> 42 <description><![CDATA[入学式の時、体よりも大きいんじゃないかと思えたランドセル。卒業式を迎える頃には、背も伸びて小さく感じるものです。6年も使っていると、ピカピカのままという訳にはいきませんが、ランドセルに刻まれた一つひとつの傷にも思い出が宿...]]></description> 43 <wfw:commentRss>https://www.juku90.com/randsel_remake/feed/</wfw:commentRss> 44 <slash:comments>0</slash:comments> 45 </item> 46 <item> 47 <title>子供の頭より大きいスイカが、なんでこんなに安いの?</title> 48 <link>https://www.juku90.com/%e5%ad%90%e4%be%9b%e3%81%ae%e9%a0%ad%e3%82%88%e3%82%8a%e5%a4%a7%e3%81%8d%e3%81%84%e3%82%b9%e3%82%a4%e3%82%ab%e3%81%8c%e3%80%81%e3%81%aa%e3%82%93%e3%81%a7%e3%81%93%e3%82%93%e3%81%aa%e3%81%ab%e5%ae%89/</link> 49 <comments>https://www.juku90.com/%e5%ad%90%e4%be%9b%e3%81%ae%e9%a0%ad%e3%82%88%e3%82%8a%e5%a4%a7%e3%81%8d%e3%81%84%e3%82%b9%e3%82%a4%e3%82%ab%e3%81%8c%e3%80%81%e3%81%aa%e3%82%93%e3%81%a7%e3%81%93%e3%82%93%e3%81%aa%e3%81%ab%e5%ae%89/#respond</comments> 50 <pubDate>Fri, 25 May 2018 13:14:02 +0000</pubDate> 51 <dc:creator><![CDATA[管理人]]></dc:creator> 52 <category><![CDATA[グルメ]]></category> 53 54 <guid isPermaLink="false">https://www.juku90.com/?p=4342</guid> 55 <description><![CDATA[ガブッとかぶりつけば、口の中いっぱいにジュワっと広がる甘さ! 今年は暑くなるのも早かったからか、スーパーには早々とスイカが並んでますね。私の住んでる稲沢市でも日中は30度近い気温になるため、そうめんやスイカを食べて涼をと...]]></description> 56 <wfw:commentRss>https://www.juku90.com/%e5%ad%90%e4%be%9b%e3%81%ae%e9%a0%ad%e3%82%88%e3%82%8a%e5%a4%a7%e3%81%8d%e3%81%84%e3%82%b9%e3%82%a4%e3%82%ab%e3%81%8c%e3%80%81%e3%81%aa%e3%82%93%e3%81%a7%e3%81%93%e3%82%93%e3%81%aa%e3%81%ab%e5%ae%89/feed/</wfw:commentRss> 57 <slash:comments>0</slash:comments> 58 </item> 59 <item> 60 <title>ホームページ作るときは、iPhoneでちゃんと見れれば8割がたOK!?</title> 61 <link>https://www.juku90.com/japanese_love_iphone_too_much/</link> 62 <comments>https://www.juku90.com/japanese_love_iphone_too_much/#respond</comments> 63 <pubDate>Thu, 24 May 2018 05:11:39 +0000</pubDate> 64 <dc:creator><![CDATA[管理人]]></dc:creator> 65 <category><![CDATA[技術的なこと]]></category> 66 67 <guid isPermaLink="false">https://www.juku90.com/?p=4334</guid> 68 <description><![CDATA[日本人、iPhone好き過ぎる問題 WEB屋界隈では常識となっている日本人のiPhone率の高さ。ま、WEB屋界隈に限らず、周りを見るとiPhone持ってる人だらけってのは、誰しも感じていることと思います。ただ、WEB屋...]]></description> 69 <wfw:commentRss>https://www.juku90.com/japanese_love_iphone_too_much/feed/</wfw:commentRss> 70 <slash:comments>0</slash:comments> 71 </item> 72 <item> 73 <title>フジテレビのドラマが好きならFODプレミアムを無料で試してみて</title> 74 <link>https://www.juku90.com/lets_fod/</link> 75 <comments>https://www.juku90.com/lets_fod/#respond</comments> 76 <pubDate>Wed, 23 May 2018 04:23:06 +0000</pubDate> 77 <dc:creator><![CDATA[管理人]]></dc:creator> 78 <category><![CDATA[トレンド情報]]></category> 79 80 <guid isPermaLink="false">https://www.juku90.com/?p=4329</guid> 81 <description><![CDATA[ある条件を満たせば、動画配信サービスFODプレミアムは無料で31日間見れます フジテレビが運営しているFODプレミアム。海外の動画配信サービスに押され気味ですが、懐かしいドラマなどのコンテンツを豊富にそろえているフジテレ...]]></description> 82 <wfw:commentRss>https://www.juku90.com/lets_fod/feed/</wfw:commentRss> 83 <slash:comments>0</slash:comments> 84 </item> 85 <item> 86 <title>いざというとき補償が効かない!クレジットカードの署名は忘れずに</title> 87 <link>https://www.juku90.com/oops_creditcard/</link> 88 <comments>https://www.juku90.com/oops_creditcard/#respond</comments> 89 <pubDate>Tue, 22 May 2018 08:12:28 +0000</pubDate> 90 <dc:creator><![CDATA[管理人]]></dc:creator> 91 <category><![CDATA[雑記]]></category> 92 93 <guid isPermaLink="false">https://www.juku90.com/?p=4324</guid> 94 <description><![CDATA[楽天銀行のJCBデビットカードが不正利用されました(2回目w) なんだか見覚えのない引き落としがダダダダッとあるな~と思ったら、不正利用されてたっぽいです。去年の3月にも不正利用されたのですが、周期が早い。 楽天銀行のV...]]></description> 95 <wfw:commentRss>https://www.juku90.com/oops_creditcard/feed/</wfw:commentRss> 96 <slash:comments>0</slash:comments> 97 </item> 98 <item> 99 <title>メールアドレス不要!秒速でYahoo! JAPAN IDを取得する方法</title> 100 <link>https://www.juku90.com/yahoo-japan-id/</link> 101 <comments>https://www.juku90.com/yahoo-japan-id/#respond</comments> 102 <pubDate>Tue, 22 May 2018 02:11:22 +0000</pubDate> 103 <dc:creator><![CDATA[管理人]]></dc:creator> 104 <category><![CDATA[雑記]]></category> 105 106 <guid isPermaLink="false">https://www.juku90.com/?p=4316</guid> 107 <description><![CDATA[Yahoo! JAPAN IDを取得したいけど、そもそもメールアドレス持ってないよ! WEBサービスの登録をするときに必ずといっていいほど求められるのがメールアドレスです。でも、「Yahoo! JAPAN IDが、初めて...]]></description> 108 <wfw:commentRss>https://www.juku90.com/yahoo-japan-id/feed/</wfw:commentRss> 109 <slash:comments>0</slash:comments> 110 </item> 111 <item> 112 <title>今さらですが、Pukiwiki(プキウィキ)をレスポンシブにして、まとめサイト作ってみた。</title> 113 <link>https://www.juku90.com/pukiwiki/</link> 114 <comments>https://www.juku90.com/pukiwiki/#respond</comments> 115 <pubDate>Sat, 12 May 2018 05:13:11 +0000</pubDate> 116 <dc:creator><![CDATA[管理人]]></dc:creator> 117 <category><![CDATA[技術的なこと]]></category> 118 119 <guid isPermaLink="false">https://www.juku90.com/?p=4300</guid> 120 <description><![CDATA[Pukiwiki(プキウィキ)はオワコンではない Pukiwiki(プキウィキ)って何?という方も、その仲間には触れた機会があると思います。何を隠そう、みんな大好きウィキペディアもWikiという仕組みがベースでできあがっ...]]></description> 121 <wfw:commentRss>https://www.juku90.com/pukiwiki/feed/</wfw:commentRss> 122 <slash:comments>0</slash:comments> 123 </item> 124 <item> 125 <title>高齢者の転倒は命取り!介護やリハビリに使う靴は専門のものを選ぶべし</title> 126 <link>https://www.juku90.com/ayumi_shoes/</link> 127 <comments>https://www.juku90.com/ayumi_shoes/#respond</comments> 128 <pubDate>Sat, 12 May 2018 01:25:59 +0000</pubDate> 129 <dc:creator><![CDATA[管理人]]></dc:creator> 130 <category><![CDATA[トレンド情報]]></category> 131 132 <guid isPermaLink="false">https://www.juku90.com/?p=4293</guid> 133 <description><![CDATA[介護の際に最も気を付けなきゃなのは「転倒」 自宅で祖母の介護を1年ほどした経験から感じたのですが、介護をしてる家族が最も気を付けてあげなければいけないのが「転倒」です。病気や体の具合が悪いといった症状に関してはお医者さん...]]></description> 134 <wfw:commentRss>https://www.juku90.com/ayumi_shoes/feed/</wfw:commentRss> 135 <slash:comments>0</slash:comments> 136 </item> 137 <item> 138 <title>友達から聞いた話をエッセイ漫画にしてみた-宝くじで1億円当てた社長の末路</title> 139 <link>https://www.juku90.com/essei_manga/</link> 140 <comments>https://www.juku90.com/essei_manga/#respond</comments> 141 <pubDate>Thu, 03 May 2018 04:26:27 +0000</pubDate> 142 <dc:creator><![CDATA[管理人]]></dc:creator> 143 <category><![CDATA[イラスト]]></category> 144 145 <guid isPermaLink="false">https://www.juku90.com/?p=4279</guid> 146 <description><![CDATA[漫画の持つ可能性 普段は文章を書くことの多い私ですが、漫画というメディアの持つ破壊力は侮れないものがあると感じています。私自身も漫画大好きですからね。小難しい理論の話なんかでも、ちょっと挿絵と吹き出しがあって漫画風になっ...]]></description> 147 <wfw:commentRss>https://www.juku90.com/essei_manga/feed/</wfw:commentRss> 148 <slash:comments>0</slash:comments> 149 </item> 150 </channel> 151</rss> 152 1532018-07-08 14:02:03 Error: かみおか日記 154

※初めにCakePHP3のHTTPクライアントを使う方法でやってみたんですが、返ってくる値がちょっと意味不明になってしまってたので断念しました。

ご参考になれば幸いです。

投稿2018/07/08 05:23

kamiokan

総合スコア54

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

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

tomona

2018/07/14 01:49

わざわざ試していただきありがとうございます。 当方でもこちらを参考に検証してみます。
guest

0

RSSも結局Xmlなので、Xmlとして解析してやればいいと思います。
外部のサイトからRSS取得するのはPHPの標準関数でfile_get_contentsでも取得できますが、せっかくCakePHPにHTTPクライアントが用意されているので、HTTPクライアントRSS取得して、Xmlクラスで解析してやればなんとなくいけそうな気がします。
https://book.cakephp.org/3.0/ja/core-libraries/httpclient.html
https://book.cakephp.org/3.0/ja/core-libraries/xml.html

投稿2018/06/24 13:09

編集2018/06/24 13:09
trewa-nek9585

総合スコア116

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

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

tomona

2018/07/02 10:26

ご回答ありがとうございます。 以下、追加でご確認してもよろしいでしょうか。 HTTPクライアントRSS取得とは下記のコードでフィード URLからXMLデータを変数($xml)に格納するということでよろしいでしょうか。 $http = new Client(); $response = $http->get('http://example.com/test.xml'); $xml = $response->xml; このデータをViewで表示するにはどのようにしたら良いでしょうか。 set()にて値を渡しても何も表示されませんでした。 ※そもそもRSSの使い方あっていますか??
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問