[スポンサーリンク]
Word Press API
WordPressは、RESTAPIを提供しています Pythonで、WordPressのRESTAPIを使ってみます
投稿情報の取得
List Posts APIを使用して、投稿に関する情報を取得しました
List Postsでは、カテゴリやタグはIDのみ取得で、名称が取得出来ません
今回は、カテゴリの情報を取得して、投稿に紐づけられているカテゴリ名を取得します
[スポンサーリンク]
カテゴリの情報を取得 List Categories API
WordPressのRESTAPIを使って、全カテゴリの情報を取得します
カテゴリの情報を取得するには、List Categories APIを使います
パラメータ
List Categories APIのパラメータは以下です
各項目について、メモを残しておきます
記載内容一切保証出来ません
項目名 | 個人的メモ |
context | 取得対象を選択。view, embed, editから選択 |
page | 取得するページ位置を指定 |
per_page | 取得するカテゴリ数を指定 |
search | 取得するカテゴリの検索ワードを指定 |
exclude | 対象とするカテゴリのIDを指定 |
include | 対象外とするカテゴリのIDを指定 |
order | ソート順序を指定。asc, descから選択 |
orderby | ソート方法を指定。id, include, name等から選択 |
hide_empty | 投稿に紐づけられていないカテゴリを表示しない場合設定 |
parent | 取得するカテゴリの親カテゴリを指定 |
post | 取得するカテゴリの紐づけられている投稿を指定 |
slug | 取得する記事のスラッグを指定 |
サンプルコード
・categoriesのエンドポイントを設定
1 2 3 |
TargetUrl = 【取得対象のWordPressサイトURL】 EndpointCategories = '/wp-json/wp/v2/categories' CategoriesTargetApiUrl = TargetUrl + EndpointCategories |
・categoriesのエンドポイントのヘッダー情報を取得
List Categoriesのレスポンスは、ページングで返ってきます
そこで、ヘッダー情報から総ページ数(X-WP-Total)をまず取得します
そして、総ページ数分リクエストをすることで全記事情報を取得します
1 |
CategoriesHeadResponse = requests.head(CategoriesTargetApiUrl, params = CategoriesHeadParameters) |
・レスポンスの総ページ数を取得
1 |
MaxPage = int(CategoriesHeadResult['X-WP-TotalPages']) |
・総ページ数分のList Categoriesのレスポンスを取得
1 |
for i in range(1, MaxPage + 1): |
・categoriesのエンドポイントのレスポンスを取得
1 |
CategoriesGetResponse = requests.get(CategoriesTargetApiUrl, params = CategoriesGetParameters) |
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】 EndpointCategories = '/wp-json/wp/v2/categories' CategoriesTargetApiUrl = TargetUrl + EndpointCategories CategoryNumPerPage = 100 # WordPressページ数取得 CategoriesHeadParameters = { 'per_page' : CategoryNumPerPage } CategoriesHeadResponse = requests.head(CategoriesTargetApiUrl, params = CategoriesHeadParameters) if CategoriesHeadResponse.status_code == 200: CategoriesHeadResult = CategoriesHeadResponse.headers MaxPage = int(CategoriesHeadResult['X-WP-TotalPages']) CategoryList = [] for i in range(1, MaxPage + 1): # WordPress全カテゴリ取得(パラメータ設定) CategoriesGetParameters = { 'page' : i, 'per_page' : CategoryNumPerPage, 'order' : 'asc', 'orderby' : 'id' } # WordPress全カテゴリ取得 CategoriesGetResponse = requests.get(CategoriesTargetApiUrl, params = CategoriesGetParameters) if CategoriesGetResponse.status_code == 200: CategoriesGetResult = json.loads(CategoriesGetResponse.text) CategoryList.extend(CategoriesGetResult) print("【カテゴリ数】" + str(len(CategoryList))) for CategoryItem in CategoryList: print(str(CategoryItem['id']) + " : " + CategoryItem['name']) |
サンプルレスポンス
1カテゴリ分のList Categoriesのレスポンスは以下です
レスポンスには、idや名称以外にも、紐づけられている投稿数やslugも含まれています
次回は、タグの情報を取得したいと思います
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 |
{ 'id': 3, 'count': 6, 'description': '', 'link': 'https://computer.masas-record-storage-container.com/category/programming/', 'name': 'プログラミング', 'slug': 'programming', 'taxonomy': 'category', 'parent': 0, 'meta': [], '_links': { 'self': [ { 'href': 'https://computer.masas-record-storage-container.com/wp-json/wp/v2/categories/3' } ], 'collection': [ { 'href': 'https://computer.masas-record-storage-container.com/wp-json/wp/v2/categories' } ], 'about': [ { 'href': 'https://computer.masas-record-storage-container.com/wp-json/wp/v2/taxonomies/category' } ], 'wp:post_type': [ { 'href': 'https://computer.masas-record-storage-container.com/wp-json/wp/v2/posts?categories=3' } ], 'curies': [ { 'name': 'wp', 'href': 'https://api.w.org/{rel}', 'templated': True } ] } } |
[スポンサーリンク]
コメント