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

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

ただいまの
回答率

88.91%

wordpressのrssの拡張子をxmlにするにはどうすればいいでしょうか?

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,393
退会済みユーザー

退会済みユーザー

今wordpressでサイトを作成しているのですが。
ブラウザがchromeの場合で、
たとえばなんですが下記のfeedのリンクを押下すると
ツリー構造にならず文字列のみで表示されてしまいます。
https://www.ideaxidea.com/feed

けれどまた下記のサイトを開くとツリー構造になってくれます。
http://itlifehack.jp/atom.xml

今回wordpressのフィードを下記のようにしたいのですが、
現在は上のサイトみたいな状態で、
どこを修正すればxmlで作成できるのでしょうか?

本当にまったくと言っていいほど無知なので、
よろしくお願いいたします。

-- 追記
理由としては業務で利用しており、要望としてあがっているので対応したいです。
ですので、”text/xml”で表示するにはどのようにすればよろしいでしょうか?よろしくお願いいたします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • argparse

    2017/04/30 16:50

    原因は Content-Type ヘッダの違いですね。 ideaxidea.com と違い、 itlifehack.jp では "text/xml" として XML ファイルであることを Content-Type ヘッダで主張しているため、 Chrome では XML ツリー表示になります。 / 一方、例えば最新の WordPress のデフォルト設定をそのまま使っているのであれば、実はより適切な "application/rss+xml" といった Content-Type ヘッダを主張しているはずなのですが、残念ながら Chrome はこの Content-Type を解釈してくれないため、ただのテキスト表示になってしまいます。しかしフィードとしてきちんと動作しないわけではありません。 / そこで確認したいのですが、「Chrome で XML 表示させたい」理由は何でしょうか? もしも「フィードとして正しい動作をしない気がする」ということでしたら、それは誤解ですので、きちんと Chrome ではなくフィードリーダーを使って動作確認をすべきだと思います。

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2017/05/09 18:38 編集

    お返事遅れまして申し訳ございません、ご回答ありがとうございます。理由としては業務で利用しており、要望としてあがっているので対応したいです。ですので、”text/xml”で表示するにはどのようにすればよろしいでしょうか?よろしくお願いいたします。

    キャンセル

回答 1

checkベストアンサー

+1

うーん、正直なところ、その要望を挙げていらっしゃる方が本当に求めていることが何なのか、やはり疑問は残るのですが…。とにかくどうしてもというのであれば、コメントでも申し上げた通り、これは RSS Feed に対して出力する Content-Type ヘッダの問題ですから、それを変更する修正を施せばよいことになります。

一応 WordPress では、以下のドキュメントにある通り、 feed_content_type() 関数及び同名の feed_content_type フィルタが提供されており、これらの戻り値によってフィードの Content-Type ヘッダ出力を決めています。

ただ困ったことに、この関数の返す結果は Content-Type ヘッダだけでなく、ページ HTML に含まれる RSS Autodiscovery (HTML 文書が、自分の更新フィード URL を教えるための特別な <link> 要素) の type 属性でも使われています。そのため、無暗にここで一律 "text/xml" を返すような実装にしてしまうと、今度はフィードリーダーが RSS を見つけられず、フィードを読みたいと思った通常の訪問者に迷惑が生じる可能性が出てきてしまいます。

ではどうするかというと、最短ルートで言えば、「もう保守性をあきらめてしまい、直接 WordPress 本体のフィードを吐き出すスクリプトを書き換えてしまう」ことになるでしょうか。お使いのバージョンは存じ上げませんが、 wp-includes/feed-XXX.php あたりに対応するテンプレートがあると思いますから、その先頭で Content-Type を出力しているheader() 呼び出しを書き換え、 feed_content_type() を呼ばずに直接"text/xml" を返すようにします。但しこの場合、 WordPress 本体のアップグレードで上書きされてしまうため、アップグレードの度に同じ修正を行う必要があると思います。

もう少し丁寧な方法で行くと、各フィードは do_feed_rss2() といった名前の関数が同名のアクションとして呼び出されていますから、この「アクションに対して remove_action() 及び add_action() を行って処理を奪い取るプラグインを実装する」というのはあり得ます。まあ実装するといっても、実際のフィード出力処理は殆ど wp-includes/feed-rss2.php のコピーになりますから大仰なな話ではありませんが、知識と時間が不足する場合、プラグインを作ること自体が難しいかもしれません。その他には、上述の feed_content_type() の返す値を RSS Autodiscovery 用のタグはテンプレートに手書きする…ということもまあ可能ではあるでしょうか。


何れにせよ、ちょっとあまりスマートな方法は思い当りませんでした。そこで、何度も同じ話に戻って恐縮ですが、やはり要望を挙げている方が 本当に求めていることは何か をまず確認した方が良いと思います。

私の想像力が足りないのかもしれませんが、「業務上の理由で Chrome を使って直接 RSS の XML ツリー表示を閲覧したい」というのは、 「単に Chrome でフィードの内容を分かりやすく確認したいだけ」 である可能性が高いように思いました。仮にもしそうなのであれば、変に苦労して XML ツリーを表示させるよりは、例えば以下のような「フィードのプレビューが可能な Chrome 拡張」を入れて、フィードとしてきちんと表示させた方が筋が良いうえ、もっと確認がしやすくなると思いますので、その方にそうお伝えした方が良いかもしれません。

Shoyu RSS/Atom Feed Preview

あるいは、抑々毎日の利用でなく、 「一度あるいはたまに、出力される RSS の XML 構造を確認しておきたい」 とお思いなのでしたら、単に (ツリー表示になっていない) RSS を表示後、ローカルに *.xml 拡張子で保存してから再度 Chrome で開けば済む話かもしれません。それ以外の理由でも、要望者の望みを満たすより良い方法が探し得る可能性がありますから、改めて再度、その方から詳しい話をお聞きになった方が良いのではないでしょうか。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/05/10 13:43

    ご回答ありがとうございました。
    アップデートするたびに直さなければならいのですね・・・
    仰る通りなぜその対応が必要なのかを確認したいと思います。
    ご丁寧な説明本当にありがとうございました。

    キャンセル

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

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

関連した質問

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