アメーバブログやライブドアブログなどブログサービスには標準でRSSフィードが生成されています。
RSSフィードがあると、気に入ったブログなどをRSSリーダーなどを使っていち早く情報をキャッチすることができますが、それ以外にも活用方法があります。
たとえば、WordPressにはRSSフィード読み込み用のブロックが用意されていますので、ブロックを設置してRSSのURLを入力すると他ブログの記事情報を自サイトに表示できます。
この方法は結構便利で、Webサイトとは別でブログ運用しているのにWebサイトにブログの最新情報など載せることが出来ます。
しかし、「gooブログ」の場合は後述のようにエラーとなり、表示することが出来ません。
今回はその対処方法をご紹介します。
エラーが発生する
前述の通り、RSSフィードのブロックを使えば簡単に外部のRSSを表示したりできるのですが、「gooブログ」のRSSフィードはエラーとなり読み込めません。
エラー内容
RSS エラー: A feed could not be found at `https://blog.goo.ne.jp/xxxxx/rss2.xml`; the status code is `403` and content-type is `text/html; charset=iso-8859-1`
原因を探っていくと「gooブログ」はWordPressからのRSSフィード読み込みをUAなどで禁止しているようで、UAを書き換えればエラーはでなくなります。
しかしWordPressのUAの書き換えは容易ではなく、一番手っ取り早い方法がコアファイルを書き換える手段です。コアファイルを書き換えるとアップデートでリセットされてしまうだけでなく、他の動作に影響が出てしまう可能性が高いのでオススメできません。
解決方法
そこで、gooブログのRSSフィードをPHPで読み込み、そのままrssとして出力する仕組みを用意すればうまくいくのではないかと考えました。
<?php
header('Content-Type: application/rss+xml; charset=utf-8');
header("Access-Control-Allow-Origin: *");
$rss = file_get_contents("https://blog.goo.ne.jp/xxxxxxx/rss2.xml");
echo $rss;
?>
上記の内容を「goo_blog_rss_proxy.php」として作成し、4行目を取得したいRSSフィードのURLに書き換えます。
そしてthemesフォルダ内などの任意の階層に配置します。
あとはRSSフィードのブロックを固定ページなどに作成し、URL入力欄に「https://xxxxx.com/wp/wp-content/themes/goo_blog_rss_proxy.php」のように指定します。
するとgooブログのRSSフィードから記事情報が取得されて表示されます。