2008.11.21
category
comments

WordPressでFlash用に複数のxmlを出力する方法

デフォルトのRSS配信とは別にページ機能を使ってxmlを出力する事が出来たのね。今まで気付かなかったのでメモ。

まずはページ用PHPの冒頭でTemplate Nameを設定する。今回の場合は「newsXML」とする。このPHPを、現在使用しているテーマフォルダにアップする。次にWordPressの管理メニューからページをクリック。タイトルを「newsXML」として、下の方にあるページテンプレートを「デフォルトテンプレート」から「newsXML」にする(page-newsXML.phpをアップしていないと、ページテンプレートというオプションが出てこないので注意)。公開ボタンを押下してから再度newsXMLの管理ページを開くと、タイトルの下にパーマリンクのURLが記載されるので、このアドレスにアクセスするとxmlが動的生成されるようになる。

Flashから必要な分だけWordPressでページを作っておいて、個別のxmlを吐き出せば管理が楽になりますよと。ちなみに下のPHPだとカテゴリーが「news」のエントリーの最新5件だけを出力する仕様にしてます。用途に合わせてquery_posts()の引数を変えてやればなんでも出せる。

page-newsXML.php

<?php header('Content-Type: text/xml; charset='.get_option('blog_charset'), true); ?>
<?php /*
Template Name: newsXML
*/ ?>
<?php echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
<root>
<?php query_posts("posts_per_page=5&category_name='news'"); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<item>
<pubdate><?php echo get_post_time('Y-m-d H:i:s', true); ?></pubdate>
<?php the_category_rss(); ?>
<description><![CDATA[<?php the_excerpt_rss(); ?>]]></description>
</item>
<?php endwhile; endif; ?>
</root>

25 Comments

  1. [...] 5ive:WordPressでFlash用に複数のxmlを出力する方法 [...]

  2. ^^;; Says

    初めまして。
    記事読ませていただきました。

    いきなりで申し訳ないのですが、

    「タイトルの下にパーマリンクのURLが記載されるので、このアドレスにアクセスするとxmlが動的生成されるようになる。」
    とありますが同じ様に作ってページにアクセスしても真っ白の画面になってしまいます。
    ソースパクらせていただいても同じ様に真白の画面になってしまいます。
    なにが原因なのでしょうか?
    ご教授お願い致します。

    因みにwordpressのバージョンは何使ってらっしゃいますか?

  3. simo Says

    >^^;;さん
    はじめまして。ページ編集画面の属性のテンプレートを選んでますか?上記PHPファイルをアップすると「newsXML」という名前がコンボボックスに選べるようになると思いますが・・・。

    このPHPの場合はエントリーのカテゴリーが「news」の記事を5件取ってきてxmlに出力します。^^;;さんのWordPressのカテゴリーに「news」が存在しないのでは?

    あとタイトルの下にパーマリンクのURLが記載されますが、このURLをそのままコピペすると末尾が/newsxmlnewsxmlとなるので、/newsxmlにしてやると上手くいくはずです。

    バージョンは最新の2.7ですよ。

  4. ^^;; Says

    simo様

    わざわざ返事ありがとうございます。
    書いてある通りにさせていただいたのですが、画面真白です笑

    ちなみに・・・
    パーマリンクのURLにアクセスするとsimoさんのブラウザは何を映し出しますか?(僕は真っ白です笑)
    動的生成されるというのは一体どういう風になるのでしょうか><;
    すごく知りたいです;;

    どうかもう一度ご教授お願い致します><;

  5. simo Says

    謎ですねー。404エラーとかは出ないんですよね?であれば、PHPがデータを出力できていない可能性があります。真っ白の画面でソース表示するとなにか出力されていませんか?

    < ? php query_posts("posts_per_page=5&category_name='news'"); ?>

    < ? php query_posts(); ?>

    に変更してみて下さい。

    パーマリンクのURLにアクセスするとxmlが表示されます。動的生成というのはxmlファイルが存在する訳ではなく、アクセスするたびにPHPがxml形式の文字列を出力するという意味です。

    仕組みとしてはWordPressのフィードと同じです。これもフィードのRSSファイルは存在しませんが、URLにアクセスするとxmlが表示されるはずです。
    http://www.5ive.info/blog/feed

  6. [...] 実際のところは以前にFC2でやっていたんですけど、色々と不都合が出てきたのでレンタルサーバーに引っ越したんですが、これまた色々と大変だったので過去の記事に関しては表示されなかったりリンクしてなくても放置ということでアップしてしまいました。こっちのブログはas3メインでやっていく予定です。 しかしMovableTypeで作ってはみましたが、WPの方が楽な感じですね・・・。投稿もサックリと更新してくれますし、ブログのデザイン、機能のカスタマイズもシンプルにできます。MovableTypeなんて記事を書いて保存したら「構築中・・・」って15秒ぐらい待たされるしデザインのカスタマイズもこんなに細かくやらねぇよってぐらい項目があって最初テンパりましたよ。今のところxmlを簡単に書き出してくれること以外はいいところ見つけれてないです。最近WPでもxml書き出せるってのもあったけど。 [...]

  7. ^^;; Says

    simo様

    お返事ありがとうございます。
    無事xmlを出力することができました。

    原因はどうも不要なスペースや改行だったっぽいです><;;

    WPがそこまでタイトだったとは。。。
    こんな単純なミスにワザワザつきあわせてしまってホント申し訳ないですm(__)m
    ありがとうございました★
    これからも色々と参考にさせていただきます!!

  8. simo Says

    >^^;;さん
    無事解決したみたいで良かったです!WordPressではPHPファイルにBOMを付けたりすると崩れたりしますからねー。自分も罠にはまる事よくありますよ。w

    こちらこそ、今後とも宜しくお願いしますね。

  9. [...] 5ive.blogさんのWordPressで専用ページを作る方法 ・http://www.5ive.info/blog/archives/280 汎用のRSSリーダーにする場合クロスドメインの問題はあるけど、これは面白い。 WordPressに変更した理由の一 [...]

  10. 通りすがりのモノ Says

    初めまして、
    記事、大変参考になります。ありがとうございます。

    そこで質問があるのですが、

    このXMLファイルの中に画像ファイルのパスも引っ張ってくることは
    可能だったりしますでしょうか??

    ご教授願います!!

  11. 通りすがりのモノ Says

    すみません追記です。

    <![CDATA[]]>
    を追加して、XMLページを表示すると、

    XML パースエラー: 接頭辞の名前空間が定義されていません。
    URL: http://takumatest.sitemix.jp/blog/?page_id=54
    行番号: 8, 列番号: 3: <![CDATA[
    —————-^
    と表示されてしまいます。。。

  12. simo Says

    >通りすがりのモノさん
    はじめまして。
    WordPressの管理画面で入力しているものは何でも持ってこれますよー。名前空間の定義はされていますか?

    通りすがりのモノさんの場合ですとタグがルート要素になってるようなので、デフォルト名前空間としてrootタグを下記のように設定すれば解決できると思いますよ。

    <root version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">

    エラーページのソースを表示すると分かると思いますがxml自体は問題なく出力されています。xmlの書式が間違っているのでブラウザでエラー表示になっているみたいですねー。xmlの名前空間に関してはこちらのページが参考になると思いますよ。

  13. 通りすがりのモノ Says

    早速の回答すみません、、、

    上記の名前空間の設定と
    <![CDATA[]]>
    と指定して

    解決しました!!!!

    wordpressやxml初心者でして、、
    ありがとうございます。助かります。

  14. [...] WordPressでFlash用に複数のxmlを出力する方法 WordPressとFlashの連携(カスタムフィールドの取得) [...]

  15. simo Says

    >通りすがりのモノさん
    おー、無事解決できたみたいですね。お役に立てて良かったです。w

  16. [...] WordPressでFlash用に複数のxmlを出力する方法 | 5ive™.blog WordPress で Flash Blog を作る際に。 (tags: wordpress flash) [...]

  17. simo Says

    サーバーによってはheader()関数を使うと怒られる場合があるみたいなので、そういったエラーが出る場合はソースの4行目を削除するとエラーを回避できます。ただし、Content-Typeを指定しておかないと、読み込み時にxmlと認識されない場合があるので注意が必要です。

  18. simo Says

    上記の自分のコメントに誤りがありました。訂正するとheader()関数をコールする場所が悪かったようです。プログラムに修正してある通り、先頭に書いてください。また余計な空白や改行があるとエラーになる場合があります。

    それでもエラーが出る場合はnewsXML.phpファイルがBOM有りになっている可能性があります。その場合はBOMなしに保存し直してみてください。

  19. [...] 『WordPressでFlash用に複数のxmlを出力する方法』(5ive.infoさん) [...]

  20. [...] WordPressでFlash用に複数のxmlを出力する方法 | 5ive™.blog (tags: WordPress flash xml インターネット tips) [...]

  21. [...] The rest is here:  WordPressでFlash用に複数のxmlを出力する方法 | 5ive™.blog [...]

  22. [...] 参考:「5ive」:WordPressでFlash用に複数のxmlを出力する方法 [...]

  23. [...] WordPress、XML出力方法。 http://www.5ive.info/blog/archives/280 で、画像へのURLを出力したい場合、 wp_get_attachment_url()を使えばいいと思ったら、これって記事の場合は出力出来ない?? http://tenderf [...]

Post a comment




Comment

Trackbacks

この記事のコメント・トラックバックRSS