PHPでWordPressの投稿を取得して使いやすい形にするfunctionを書いてみた

WordPressの投稿はURLに /feed を付けると見ることが出来ます。これを他のサイトやプログラムで利用したかったのでPHPで取得して内容を使ってみたいと思います。そのまえに、xmlを整形して使いやすい形にするfunctionを書いてみました。それについて書きます。

feedで表示の確認:表示されているRSSの設定はここでしていました

今このblogの投稿RSSは

https://usortblog.com/feed/

このURLで表示されます。中を見ると、最新の10件がxmlフィードとなっているようです。また、記事全文も入っています。

この設定は

ダッシュボード 設定>表示設定



RSS/Atom フィードで表示する最新の投稿数
 と RSS/Atom フィードでの各投稿の表示 で指定した内容になっています。変更したい場合はここで設定を変えることが出来ます。

simplexml_load_file でWordPressのRSSフィードを取得してみた


simplexml_load_file
 を使ってWordPressのRSSフィードを取得してみました。

このようなコードを書いて実行します。結果は、

こんな感じで、一見「OK~!」と思ったのですが、よく見ると先ほどfeedをブラウザで表示していたいくつかの項目が表示されていません。

例えばこのような、 <dc:creator> が表示されていないのです。この項目は、名前空間を使っている項目で、最強と思われる var_dump でも表示されないようです。見たい場合は、

このようなコードを書いて表示しないといけません。しかし、、ちょっとこの方法は面倒そうです。

file_get_contents で取得したデータを加工する

上記の方法ですと、コーディングが面倒そうです。

ということで、もうちょっと簡単に使う方法についてググって調べてみました。

RSS(XML)の名前空間やCDATAの値を取得する方法

この記事がとても参考になりました。simplexml_load_string を使う方法です。

ほぼ丸ごとコピーで、ちょっとだけ修正しました。これで表示すると、

このように名前空間での dc:creator が dc_creator というキーの配列の形になりました。このあとこれらの値を参照するときも楽そうです。

WordPressのRSSフィードを使いやすい形で取得するfunction

今時点では各記事である item 部分が編集されただけで、blogのタイトルなどが変数に入っていません。取得した全ての値をあるていど使いやすい配列の形などにするfunctionを書いてみました。

このfunctionを呼び出して、取得した値を表示するプログラム部分を

このように書いて実行すると、

このように扱いやすい感じの配列になりました。

使い方としては、例えば

このようにすれば、

こんな風に表示することができます。

まとめ:項目の内容については別途一覧にしたいと思います

本当はもっと早く扱いやすい形にできるはずだったのですが、色々あって思わず長いblogになってしまいました。

自分的にxmlの項目名や内容について一覧にして後で使うときにすぐわかるようにしておきたかったのですがとても長くなってしまったので、一覧や具体的にどうやって使うかについてはまた別の投稿で書きたいと思います。

兎本美佳

ブログを見た人がそのままできたらいいなと思って、できるだけ丁寧に書いています。blogに書いたようなネタの有償対応のご相談は「ゆうそうと」へいただければと思います(^^)/
無償での対応をご希望の場合は、コメントをいただけましたら可能な場合はコメントを返させていただきます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサー広告
ブログをメールで購読

メールアドレスを記入して購読すれば、更新をメールで受信できます。

259人の購読者に加わりましょう

トップへ戻る