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

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

ただいまの
回答率

90.84%

  • WordPress

    6433questions

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

  • MySQL

    5370questions

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

  • CakePHP

    2192questions

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

  • RSS

    132questions

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

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

受付中

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 135

tomona

score 13

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情報を拾って表示する。
【課題】

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

案2 記事だけwp_postsのguidに飛ばして表示する。
【課題】

  1. ヘッダーとフッターを引き継ぐことができない。
  2. 逆にCakephp側にguidのHTML情報を表示させることは可能でしょうか??

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

宜しくお願い致します。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • trewa-nek9585

    2018/06/24 21:54

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

    キャンセル

回答 3

+1

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

$rssFeedUrl = "https://〜";// WordPressの生成したRSSフィードのURL
$xml = file_get_contents($rssFeedUrl);
$xmlElement = new SimpleXMLElement($xml);

var_dump($xmlElement);// この段階でPHPで利用できる形になっています

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/02 19: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のことを指していますか?

    キャンセル

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/07/02 19:26

    ご回答ありがとうございます。
    以下、追加でご確認してもよろしいでしょうか。
    HTTPクライアントRSS取得とは下記のコードでフィード URLからXMLデータを変数($xml)に格納するということでよろしいでしょうか。
    $http = new Client();
    $response = $http->get('http://example.com/test.xml');
    $xml = $response->xml;

    このデータをViewで表示するにはどのようにしたら良いでしょうか。
    set()にて値を渡しても何も表示されませんでした。
    ※そもそもRSSの使い方あっていますか??

    キャンセル

0

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

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

の2つ。

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

app/logs/error.log

の1つ、です。

【FetchRssController.php】↓

<?php

namespace App\Controller;

use App\Controller\AppController;

/**
 * FetchRss Controller
 *
 */
class FetchRssController extends AppController
{
    /**
     * Index method
     * WordPressのRSSを取得して表示する
     *
     * @param void
     * @return \Cake\Http\Response|void
     */
    public function index()
    {
        $rssFeedUrl =('https://www.juku90.com/feed/');
        $xml = file_get_contents($rssFeedUrl);
        $this->log($xml); // デバッグ用
        $xmlObject = simplexml_load_string($xml);
        $this->log($xmlObject->channel->title); // デバッグ用
        $this->set(compact('xmlObject'));
    }
}

【index.ctp】↓

<style>
    .header1 {
        font-size: 26px;
    }
    .header2 {
        font-size: 20px;
    }
</style>

<h1 class="header1">RSS取得した結果</h1>
<?php
foreach ($xmlObject->channel->item as $item) {
    echo '<h2 class="header2">' . (string)$item->title . '</h2>';
    echo '<p>' . (string)$item->description;
    echo '<br />';
    echo '<a href="' . (string)$item->link . '" target="_blank" />記事の詳細はこちら</a>';
    echo '</p>';
    echo '<hr />';
}

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

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

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

【error.log】↓

2018-07-08 14:02:03 Error: <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    >

<channel>
    <title>かみおか日記</title>
    <atom:link href="https://www.juku90.com/feed/" rel="self" type="application/rss+xml" />
    <link>https://www.juku90.com</link>
    <description>愛知県稲沢市のホームページおじさん(上岡)の日記です。</description>
    <lastBuildDate>Wed, 27 Jun 2018 07:57:52 +0000</lastBuildDate>
    <language>ja</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>

    <item>
        <title>ついに稲沢にもスターバックスの路面店が上陸っ!</title>
        <link>https://www.juku90.com/staba_inazawa/</link>
        <comments>https://www.juku90.com/staba_inazawa/#respond</comments>
        <pubDate>Wed, 27 Jun 2018 07:56:57 +0000</pubDate>
        <dc:creator><![CDATA[管理人]]></dc:creator>
                <category><![CDATA[稲沢市情報]]></category>

        <guid isPermaLink="false">https://www.juku90.com/?p=4361</guid>
        <description><![CDATA[さくらぎ歯科の隣、何ができるんだろ? ヨシヅヤ新稲沢店の前の通りに、私がお世話になっているさくらぎ歯科さんがあります。さくらぎ歯科は予防医療的な考え方をしてくれる頼りになる歯医者さんで、3か月に一度定期健診に行っています...]]></description>
        <wfw:commentRss>https://www.juku90.com/staba_inazawa/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>
        </item>
        <item>
        <title>6年間の思い出がいっぱい詰まったランドセル。捨てる?それとも…</title>
        <link>https://www.juku90.com/randsel_remake/</link>
        <comments>https://www.juku90.com/randsel_remake/#respond</comments>
        <pubDate>Tue, 29 May 2018 01:24:07 +0000</pubDate>
        <dc:creator><![CDATA[管理人]]></dc:creator>
                <category><![CDATA[トレンド情報]]></category>

        <guid isPermaLink="false">https://www.juku90.com/?p=4345</guid>
        <description><![CDATA[入学式の時、体よりも大きいんじゃないかと思えたランドセル。卒業式を迎える頃には、背も伸びて小さく感じるものです。6年も使っていると、ピカピカのままという訳にはいきませんが、ランドセルに刻まれた一つひとつの傷にも思い出が宿...]]></description>
        <wfw:commentRss>https://www.juku90.com/randsel_remake/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>
        </item>
        <item>
        <title>子供の頭より大きいスイカが、なんでこんなに安いの?</title>
        <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>
        <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>
        <pubDate>Fri, 25 May 2018 13:14:02 +0000</pubDate>
        <dc:creator><![CDATA[管理人]]></dc:creator>
                <category><![CDATA[グルメ]]></category>

        <guid isPermaLink="false">https://www.juku90.com/?p=4342</guid>
        <description><![CDATA[ガブッとかぶりつけば、口の中いっぱいにジュワっと広がる甘さ! 今年は暑くなるのも早かったからか、スーパーには早々とスイカが並んでますね。私の住んでる稲沢市でも日中は30度近い気温になるため、そうめんやスイカを食べて涼をと...]]></description>
        <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>
        <slash:comments>0</slash:comments>
        </item>
        <item>
        <title>ホームページ作るときは、iPhoneでちゃんと見れれば8割がたOK!?</title>
        <link>https://www.juku90.com/japanese_love_iphone_too_much/</link>
        <comments>https://www.juku90.com/japanese_love_iphone_too_much/#respond</comments>
        <pubDate>Thu, 24 May 2018 05:11:39 +0000</pubDate>
        <dc:creator><![CDATA[管理人]]></dc:creator>
                <category><![CDATA[技術的なこと]]></category>

        <guid isPermaLink="false">https://www.juku90.com/?p=4334</guid>
        <description><![CDATA[日本人、iPhone好き過ぎる問題 WEB屋界隈では常識となっている日本人のiPhone率の高さ。ま、WEB屋界隈に限らず、周りを見るとiPhone持ってる人だらけってのは、誰しも感じていることと思います。ただ、WEB屋...]]></description>
        <wfw:commentRss>https://www.juku90.com/japanese_love_iphone_too_much/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>
        </item>
        <item>
        <title>フジテレビのドラマが好きならFODプレミアムを無料で試してみて</title>
        <link>https://www.juku90.com/lets_fod/</link>
        <comments>https://www.juku90.com/lets_fod/#respond</comments>
        <pubDate>Wed, 23 May 2018 04:23:06 +0000</pubDate>
        <dc:creator><![CDATA[管理人]]></dc:creator>
                <category><![CDATA[トレンド情報]]></category>

        <guid isPermaLink="false">https://www.juku90.com/?p=4329</guid>
        <description><![CDATA[ある条件を満たせば、動画配信サービスFODプレミアムは無料で31日間見れます フジテレビが運営しているFODプレミアム。海外の動画配信サービスに押され気味ですが、懐かしいドラマなどのコンテンツを豊富にそろえているフジテレ...]]></description>
        <wfw:commentRss>https://www.juku90.com/lets_fod/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>
        </item>
        <item>
        <title>いざというとき補償が効かない!クレジットカードの署名は忘れずに</title>
        <link>https://www.juku90.com/oops_creditcard/</link>
        <comments>https://www.juku90.com/oops_creditcard/#respond</comments>
        <pubDate>Tue, 22 May 2018 08:12:28 +0000</pubDate>
        <dc:creator><![CDATA[管理人]]></dc:creator>
                <category><![CDATA[雑記]]></category>

        <guid isPermaLink="false">https://www.juku90.com/?p=4324</guid>
        <description><![CDATA[楽天銀行のJCBデビットカードが不正利用されました(2回目w) なんだか見覚えのない引き落としがダダダダッとあるな~と思ったら、不正利用されてたっぽいです。去年の3月にも不正利用されたのですが、周期が早い。 楽天銀行のV...]]></description>
        <wfw:commentRss>https://www.juku90.com/oops_creditcard/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>
        </item>
        <item>
        <title>メールアドレス不要!秒速でYahoo! JAPAN IDを取得する方法</title>
        <link>https://www.juku90.com/yahoo-japan-id/</link>
        <comments>https://www.juku90.com/yahoo-japan-id/#respond</comments>
        <pubDate>Tue, 22 May 2018 02:11:22 +0000</pubDate>
        <dc:creator><![CDATA[管理人]]></dc:creator>
                <category><![CDATA[雑記]]></category>

        <guid isPermaLink="false">https://www.juku90.com/?p=4316</guid>
        <description><![CDATA[Yahoo! JAPAN IDを取得したいけど、そもそもメールアドレス持ってないよ! WEBサービスの登録をするときに必ずといっていいほど求められるのがメールアドレスです。でも、「Yahoo! JAPAN IDが、初めて...]]></description>
        <wfw:commentRss>https://www.juku90.com/yahoo-japan-id/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>
        </item>
        <item>
        <title>今さらですが、Pukiwiki(プキウィキ)をレスポンシブにして、まとめサイト作ってみた。</title>
        <link>https://www.juku90.com/pukiwiki/</link>
        <comments>https://www.juku90.com/pukiwiki/#respond</comments>
        <pubDate>Sat, 12 May 2018 05:13:11 +0000</pubDate>
        <dc:creator><![CDATA[管理人]]></dc:creator>
                <category><![CDATA[技術的なこと]]></category>

        <guid isPermaLink="false">https://www.juku90.com/?p=4300</guid>
        <description><![CDATA[Pukiwiki(プキウィキ)はオワコンではない Pukiwiki(プキウィキ)って何?という方も、その仲間には触れた機会があると思います。何を隠そう、みんな大好きウィキペディアもWikiという仕組みがベースでできあがっ...]]></description>
        <wfw:commentRss>https://www.juku90.com/pukiwiki/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>
        </item>
        <item>
        <title>高齢者の転倒は命取り!介護やリハビリに使う靴は専門のものを選ぶべし</title>
        <link>https://www.juku90.com/ayumi_shoes/</link>
        <comments>https://www.juku90.com/ayumi_shoes/#respond</comments>
        <pubDate>Sat, 12 May 2018 01:25:59 +0000</pubDate>
        <dc:creator><![CDATA[管理人]]></dc:creator>
                <category><![CDATA[トレンド情報]]></category>

        <guid isPermaLink="false">https://www.juku90.com/?p=4293</guid>
        <description><![CDATA[介護の際に最も気を付けなきゃなのは「転倒」 自宅で祖母の介護を1年ほどした経験から感じたのですが、介護をしてる家族が最も気を付けてあげなければいけないのが「転倒」です。病気や体の具合が悪いといった症状に関してはお医者さん...]]></description>
        <wfw:commentRss>https://www.juku90.com/ayumi_shoes/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>
        </item>
        <item>
        <title>友達から聞いた話をエッセイ漫画にしてみた-宝くじで1億円当てた社長の末路</title>
        <link>https://www.juku90.com/essei_manga/</link>
        <comments>https://www.juku90.com/essei_manga/#respond</comments>
        <pubDate>Thu, 03 May 2018 04:26:27 +0000</pubDate>
        <dc:creator><![CDATA[管理人]]></dc:creator>
                <category><![CDATA[イラスト]]></category>

        <guid isPermaLink="false">https://www.juku90.com/?p=4279</guid>
        <description><![CDATA[漫画の持つ可能性 普段は文章を書くことの多い私ですが、漫画というメディアの持つ破壊力は侮れないものがあると感じています。私自身も漫画大好きですからね。小難しい理論の話なんかでも、ちょっと挿絵と吹き出しがあって漫画風になっ...]]></description>
        <wfw:commentRss>https://www.juku90.com/essei_manga/feed/</wfw:commentRss>
        <slash:comments>0</slash:comments>
        </item>
    </channel>
</rss>

2018-07-08 14:02:03 Error: かみおか日記

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/14 10:49

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

    キャンセル

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

  • ただいまの回答率 90.84%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • WordPress

    6433questions

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

  • MySQL

    5370questions

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

  • CakePHP

    2192questions

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

  • RSS

    132questions

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