[スポンサーリンク]
Word Press API
WordPressは、RESTAPIを提供しています Pythonで、WordPressのRESTAPIを使ってみます
https://developer.wordpress.org/rest-api/reference/
投稿情報の取得
List Posts APIを使用して、投稿に関する情報を取得しました
List Postsでは、カテゴリやタグはIDのみ取得で、名称が取得出来ません
今回は、タグの情報を取得して、投稿に紐づけられているタグ名を取得します
【Python3】【WordPressAPI】WordPressの全投稿(全記事)を取得
Word Press APIWordPressは、RESTAPIを提供していますPythonで、WordPressのRESTAPIを使ってみます投稿の情報を取得 List Posts ...
[スポンサーリンク]
カテゴリの情報を取得 List Tags API
WordPressのRESTAPIを使って、全カテゴリの情報を取得します
タグの情報を取得するには、List Tags APIを使います
https://developer.wordpress.org/rest-api/reference/tags/#list-tags
パラメータ
List Tags APIのパラメータは以下です
各項目について、メモを残しておきます
記載内容一切保証出来ません
項目名 | 個人的メモ |
context | 取得対象を選択。view, embed, editから選択 |
page | 取得するページ位置を指定 |
per_page | 取得するタグ数を指定 |
search | 取得するタグの検索ワードを指定 |
exclude | 対象とするタグのIDを指定 |
include | 対象外とするタグのIDを指定 |
order | ソート順序を指定。asc, descから選択 |
orderby | ソート方法を指定。id, include, name等から選択 |
hide_empty | 投稿に紐づけられていないタグを表示しない場合設定 |
post | 取得するタグの紐づけられている投稿を指定 |
slug | 取得する記事のスラッグを指定 |
サンプルコード
・tagsのエンドポイントを設定
1 2 3 |
TargetUrl = 【取得対象のWordPressサイトURL】 EndpointTags = '/wp-json/wp/v2/Tags' TagsTargetApiUrl = TargetUrl + EndpointTags |
・tagsのエンドポイントのヘッダー情報を取得
List Tagsのレスポンスは、ページングで返ってきます
そこで、ヘッダー情報から総ページ数(X-WP-Total)をまず取得します
そして、総ページ数分リクエストをすることで全記事情報を取得します
1 |
TagsHeadResponse = requests.head(TagsTargetApiUrl, params = TagsHeadParameters) |
・レスポンスの総ページ数を取得
1 |
MaxPage = int(TagsHeadResult['X-WP-TotalPages']) |
・総ページ数分のList Tagsのレスポンスを取得
1 |
for i in range(1, MaxPage + 1): |
・tagsのエンドポイントのレスポンスを取得
1 |
TagsGetResponse = requests.get(TagsTargetApiUrl, params = TagsGetParameters) |
GETリクエストは、初期設定では認証等は不要です
今回はサンプルコードとして、全タグのidと名称を取得してみます
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# coding: utf_8 # モジュールインポート import json import requests # WordPressページ数取得(パラメータ設定) TargetUrl = 【取得対象のWordPressサイトURL】 EndpointTags = '/wp-json/wp/v2/Tags' TagsTargetApiUrl = TargetUrl + EndpointTags TagNumPerPage = 100 # WordPressページ数取得 TagsHeadParameters = { 'per_page' : TagNumPerPage } TagsHeadResponse = requests.head(TagsTargetApiUrl, params = TagsHeadParameters) if TagsHeadResponse.status_code == 200: TagsHeadResult = TagsHeadResponse.headers MaxPage = int(TagsHeadResult['X-WP-TotalPages']) TagList = [] for i in range(1, MaxPage + 1): # WordPress全タグ取得(パラメータ設定) TagsGetParameters = { 'page' : i, 'per_page' : TagNumPerPage, 'order' : 'asc', 'orderby' : 'id' } # WordPressタグ事取得 TagsGetResponse = requests.get(TagsTargetApiUrl, params = TagsGetParameters) if TagsGetResponse.status_code == 200: TagsGetResult = json.loads(TagsGetResponse.text) TagList.extend(TagsGetResult) print("【タグ数】" + str(len(TagList))) for TagItem in TagList: print(str(TagItem['id']) + " : " + TagItem['name']) |
サンプルレスポンス
1カテゴリ分のList Tagsのレスポンスは以下です
レスポンスには、idや名称以外にも、紐づけられている投稿数やslugも含まれています
次回は、WordPressの記事をTwitterAPIでツイートをしたいと思います
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
{ 'id': 7, 'count': 5, 'description': '', 'link': 'https://computer.masas-record-storage-container.com/tag/twitterapi/', 'name': 'TwitterAPI', 'slug': 'twitterapi', 'taxonomy': 'post_tag', 'meta': [], '_links': { 'self': [ { 'href': 'https://computer.masas-record-storage-container.com/wp-json/wp/v2/tags/7' } ], 'collection': [ { 'href': 'https://computer.masas-record-storage-container.com/wp-json/wp/v2/tags' } ], 'about': [ { 'href': 'https://computer.masas-record-storage-container.com/wp-json/wp/v2/taxonomies/post_tag' } ], 'wp:post_type': [ { 'href': 'https://computer.masas-record-storage-container.com/wp-json/wp/v2/posts?tags=7' } ], 'curies': [ { 'name': 'wp', 'href': 'https://api.w.org/{rel}', 'templated': True } ] } } |
[スポンサーリンク]
コメント