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

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

新規登録して質問してみよう
ただいま回答率
85.48%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

WordPress

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

Q&A

解決済

1回答

4366閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

WordPress

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

0グッド

0クリップ

投稿2017/04/27 09:36

編集2017/05/09 09:39

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

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

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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

argparse

2017/04/30 07: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 09:40 編集

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

回答1

0

ベストアンサー

うーん、正直なところ、その要望を挙げていらっしゃる方が本当に求めていることが何なのか、やはり疑問は残るのですが…。とにかくどうしてもというのであれば、コメントでも申し上げた通り、これは 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 03:40

argparse

総合スコア1017

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/10 04:43

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問