ブログ管理

【WordPress】サブドメインのRSSがエラーになるので暫定対処

サブドメインで構築しているブログのRSSが読み込めないので、場当たり的な対処をした話です。シェルのソースは記事最後にありますが、カスタマイズ必要なのでご注意ください。

サブドメインブログのRSSがエラーになる

そもそもサブドメインとは

このブログのURLは「~it-diary.mejilong.com」ですが、私が持っている(購入した)ドメインは「mejilong.com」です。
頭に「it-diary」をつけて、独立したドメインかのように扱っています。
これがサブドメインです。

私は、IT系、育児系、ゲーム系の3種類のブログをサブドメインで使い分けています。

検索エンジン的にはあまり良い効果はないらしいのですが、ブログのジャンルが雑多になりすぎると訪問者様が混乱するかもなと思い、分けました。

RSSを使おうと思ったらエラー

とはいえ、興味があれば他のブログも見てほしいなあ…という思いもあります。
そこで導入を検討したのがRSSです。ブログの更新情報を自動収集するやつです。
姉妹ブログの新着記事をサイドバーに表示すればいいじゃんか、と思ったのですが、これがダメでした。

なぜかわかりませんが、エラーになります。

自身のドメインのRSSは読み込めるものの、サブドメインのRSSは読み込めずにエラーが表示されます。
同じ現象が質問サイトに挙げられていたものの、結局解決はしていない様子。あまりメジャーなエラーではないのかも…

HTMLファイルの自動生成で対処

エラーの解決方法がわからなかったので、Shellプログラムで暫定対処することにしました。
WordPressのフィード内容から、「新着記事のタイトル」、「URL」、「日付」をまとめたHTMLファイルを生成し、それを各ブログのルートディレクトリにコピーして、ブログサイドバーに表示します。

まずはHTMLファイルの生成

wgetコマンドを使って、ブログURL/feed の内容を取り込みます。
いろんな情報が書かれたXMLファイルが作られますので、titleタグ、linkタグ、pubDateタグが存在する行のみを残します。
それぞれ、記事タイトル、記事URL、記事作成日時を扱っています。
このときの状態がこんな感じ。

これをHTML風に加工して、最終的にこんな感じにします。

ブラウザで表示したときのレイアウトはこうなります。

作成したHTMLファイルを、各ブログから参照可能なディレクトリに移動します。
ここでは、ルートディレクトリ(DocumentRoot)を例とします。

ブログのサイドバーに設定

取得したHTMLファイルをブログのサイドバーに表示します。
まず、HTMLファイルの読み込みを可能とするために、「functions.php」に以下の内容を追記します。
こちらのページを参考にさせていただきました。)

次に、サイドバーに「テキスト」ウィジェットを追加して
「[include file="作成したHTMLファイル名"]」と記入すれば、表示されます。される…はず!

私はこのシェルを1日1回、夜間に実行して、最新記事の内容を各ディレクトリに送信するようにしています。

シェルプログラム

作成したシェルプログラムは以下です。黄色くマークしている行は、各環境に合わせて書き換えてください。要注意なのは91行目以降です。3つ運用しているブログのうちひとつは、フィードの構成がほかとちょっと違ったので、パラメータの数値を2ずつ減らさないと正しくうごきませんでした。

COMMENT

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください