WP REST APIでブログからお知らせを取得してみる【WordPress】【Python】

シェアする

WordPressにはREST APIが用意されており、外からAPIを叩いて記事の内容などを利用しやすい形で取得することができます。
シンプルなんですが、使い道は色々あって、例えばWebサイトの特定のページのみをWordpressで更新できるようにしたいときは、WebサイトからWP REST APIを叩いて、記事のタイトルや内容を取得して表示なんてことができるのです。
スポンサーリンク

何をするか

今回は、Pythonで、WordPress APIを叩いてお知らせ記事(特定のカテゴリに属する)のタイトルとリンクを取得してみたいと思います。具体的には下みたいな感じを目標とします。
実際に動かすとこんな感じです。旧バージョンにつき証明書が切れていますが、ご了承ください。

エンドポイントの確認

詳細な仕様については公式のページを見たほうが速いと思いますので紹介しておきます。
あなたのブログがblog.cosnomi.comというURLだとすると、記事を取得するためのAPIエンドポイントは
となります。ということで、こちらにアクセスしてみてください。jsonが出力されたと思います。特に制限を加えていないので、全post(といっても最新10記事だけっぽいですね)のデータが表示されています。
今回は「お知らせ」カテゴリに属する記事のみを取得するということですので、特定のカテゴリのみを取り出す場合は、
http://blog.cosnomi.com/wp-json/wp/v2/posts?categories=【カテゴリID】
となります。
では、次にカテゴリIDはどのようにして取得するのか説明します。

カテゴリIDの取得

管理画面カテゴリメニューを選択してください。
対象となるカテゴリをクリックします
URLのtag_IDがカテゴリIDです。
今回の場合は56となります。
ということで、今回の場合は
からデータを取得して表示することになります

PythonからAPIを叩く

PythonからRESTful APIを叩く(RESTに限ったことではないですが)には、requestsを使います。


をしてから

でレスポンスを取得します。responseはPythonのdict型またはlistになります。どのようにデータを取り出すかは、実際に叩いてjsonの中身を見れば分かるのですが、各記事のデータを表すdictのlistになっていますね。
そこで、for res in response:としてやれば中では下のようにデータを取得できます。renderedは忘れやすいので要注意です。
タイトル
res[‘title’][‘rendered’]
記事へのリンク
res[‘link’]
本文
res[‘content’][‘rendered’]
あとは、これを例えばFlaskだったらtemplateに渡してrenderしてやれば最初の画像のような表を表示できます。

まとめ

やっぱりPythonはシンプルで良いですね~。
最後までお読みいただきありがとうございました。
スポンサーリンク

シェアする

フォローする