RSSフィードは次の場合に必要になります。
- ページのインデックスを速めたい
- SEO的にも良さそうなので導入したい
- feedlyとかで新着情報を発信したい
僕自身もRSSFeedを自サービスに組み込みたかったんです。
ただ自力で実装するなんてほぼ不可能。
そこで便利なライブラリを見つけました。
その名も RSSGenerator というライブラリ
これが本当に便利で使いやすかったので、
ここではPHPでRSS/フィード作成する方法をまとめます。
このページの目次
RSSGeneratorというライブラリの使い方
1.composerからインストールする
まずはインストールから
このライブラリはGitHubで公開されてます。
composerなら次コマンドを打つだけです。
1 |
composer require bhaktaraz/php-rss-generator:dev-master |
これでインストール完了
2.RSSフィードを出力するコード例
このライブラリは本当に使いやすいです。
例えば https://example.com/
がサービスURLだとします。そしてそこの https://example.com/feed
でRSSフィード配信することになったとしましょう。
その場合、次のようなコードを書けばOKです。
▼ RSSフィードを作成&出力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
use Bhaktaraz\RSSGenerator\Item; use Bhaktaraz\RSSGenerator\Feed; use Bhaktaraz\RSSGenerator\Channel; header('Content-Type: text/xml'); /// フィード本体 $feed = new Feed(); $channel = new Channel(); $channel ->title('Example') ->description('This is example service.') ->url('https://example.com/') ->copyright('Copyright 2020 Example') ->updateFrequency(1) ->updatePeriod('hourly') ->ttl(60) ->appendTo($feed); /// フィードに1件追加 $item = new Item(); $item ->title('My first post') ->description('Hello!') ->url('https://example.com/?p=1') ->pubDate(strtotime('Fri, 20 Nov 2020 03:08:42 +0100')) ->content('<article><title>My first post</title><div id="content">Hello! I like sweets like Cupcake, Donut, Eclair, Froyo, Gingerbread, and so on...</div></atricle>') ->appendTo($channel); /// 最後にRSS出力 echo $feed->render(); |
まあこういう風に全部直書きはありえないですが・・・当然ながらDBから最新データを10件なり20件なりひっぱてきて、それを動的にフィード追加していくというのが現実的ですね。
大事なポイントとしては header('Content-Type: text/xml'); を指定しておくこと。これで人間が見た時でもXMLとして整形して表示できます。あと最後に echo $feed_render(); とすることで生成したRSSを出力するのも忘れずに。
そしてSearch Console の【サイトマップ】=>【新しいサイトマップの追加】の追加からRSSフィードを登録するだけです。実際に自動出力したサイトマップを登録してみたら上手くいきました。
RSSとして正しい形式か検証(validate)する
最後に念のためRSSを検証します。
使用するツールはこちら
ここに生成されたRSSをコピペします
▼ このような感じでそのまま貼り付け
▼ Congratulation! と出れば問題なし
上画像のように「Congratulation!」とすればRSSとしては何の問題もないということです。もし「Sorry」と出てしまったなら致命的な文法ミスがあるので、RSS出力設定に問題がないか確認してください。
RSSフィード出力はライブラリを使おう!
もちろん人力でもフィード出力できます。
ただ色々細かな仕様を学ばないといけないし、面倒です。
それなら最初からライブラリを使う方が賢いですね。
以上、PHPでのRSSフィード出力でした。ではまた(^^)/~~~