認証の設定方法
WordPress REST APIにアクセスするためには、適切な認証が必要です。ここでは、application_password
、jwt
、oauth1
の3つの認証方法に対応した認証設定を行う方法を紹介します。
REST APIの認証方法については以下の記事でトークンなどを取得しておいてください。
import requests
class WordPressClient:
def __init__(self, wp_url, auth_method, auth_info):
"""
WordPress APIクライアントの初期化
:param wp_url: WordPressサイトのURL
:param auth_method: 認証方法 ("application_password", "jwt", "oauth1")
:param auth_info: 認証情報の辞書
"""
self.wp_url = wp_url
self.auth_method = auth_method
self.auth_info = auth_info
self.headers = {}
# 認証設定
self.set_auth()
def set_auth(self):
""" 認証設定を行う """
if self.auth_method == "application_password":
username = self.auth_info.get("username")
password = self.auth_info.get("password")
self.headers["Authorization"] = f"Basic {requests.auth._basic_auth_str(username, password)}"
elif self.auth_method == "jwt":
token = self.auth_info.get("token")
self.headers["Authorization"] = f"Bearer {token}"
elif self.auth_method == "oauth1":
from requests_oauthlib import OAuth1
consumer_key = self.auth_info.get("consumer_key")
consumer_secret = self.auth_info.get("consumer_secret")
token_key = self.auth_info.get("token_key")
token_secret = self.auth_info.get("token_secret")
self.auth = OAuth1(consumer_key, consumer_secret, token_key, token_secret)
else:
raise ValueError("Unsupported authentication method")
auth_method
パラメータには、使用する認証方法を指定します。auth_info
には認証情報を辞書形式で渡します。set_auth
メソッドは、指定された認証方法に基づいてHTTPリクエストのヘッダーを設定します。
新規記事の作成
次に、新しい記事を作成するメソッドを紹介します。WordPressの投稿タイプであるposts
を使って、create_post
メソッドで記事を新規作成します。
from datetime import datetime
class WordPressClient:
# 認証設定のメソッドは省略
def request(self, method, endpoint, data=None, files=None):
"""
WordPress APIへのリクエストを行う
:param method: HTTPメソッド (GET, POST, etc.)
:param endpoint: APIエンドポイント
:param data: リクエストデータ
:param files: ファイルデータ(画像アップロード用)
:return: レスポンスオブジェクト
"""
url = f"{self.wp_url}/wp-json/wp/v2/{endpoint}"
if self.auth_method == "oauth1":
response = requests.request(method, url, auth=self.auth, json=data, files=files)
else:
response = requests.request(method, url, headers=self.headers, json=data, files=files)
if not response.ok:
raise Exception(f"Error: {response.status_code} - {response.text}")
return response.json()
def create_post(self, post_id=None, **kwargs):
"""
WordPressに投稿を作成または更新する
:param post_id: 更新する投稿のID(新規作成の場合はNone)
:param kwargs: 投稿のデータ(タイトル、コンテンツ、ステータス、カテゴリーなど)
:return: 投稿ID
"""
endpoint = f"posts/{post_id}" if post_id else "posts"
method = "PUT" if post_id else "POST"
response = self.request(method, endpoint, data=kwargs)
return response.get('id')
request
メソッドはWordPress APIに対してHTTPリクエストを送信するための汎用メソッドです。様々な処理で必要になるので、別途作成しておきます。create_post
メソッドは新しい投稿を作成します。既存の投稿IDを指定することで、投稿の更新も可能です。
記事の更新
記事の更新も新規作成とほぼ同様です。create_post
メソッドでpost_id
を指定すれば、指定したIDの記事が更新されます。
それぞれの認証方法(application_password
、jwt
、oauth1
)について、Pythonコードの実行例を示します。これにより、WordPress APIを使って記事を新規作成または更新する具体的な手順がわかります。
実行例
application_password 認証の例
WordPressのApplication Passwords
プラグインを使用して生成されたパスワードを用いる認証方法です。この方法はシンプルで設定が簡単です。
# 必要な情報を定義
wp_url = "https://your-wordpress-site.com"
auth_method = "application_password"
auth_info = {
"username": "your_username", # WordPressのユーザー名
"password": "your_application_password" # アプリケーションパスワード
}
# WordPressClientのインスタンスを作成
client = WordPressClient(wp_url, auth_method, auth_info)
# 新規記事を作成する
post_data = {
"title": "新しいブログ記事",
"content": "これは新しい記事のコンテンツです。",
"status": "publish"
}
post_id = client.create_post(**post_data)
print(f"新しい記事が作成されました。記事ID: {post_id}")
jwt 認証の例
JWT(JSON Web Token)を使用した認証方法です。この方法はセキュアで、Tokenベースの認証をサポートします。サーバー側にJWT認証用のプラグイン(例: JWT Authentication for WP REST API
)をインストールする必要があります。
# 必要な情報を定義
wp_url = "https://your-wordpress-site.com"
auth_method = "jwt"
auth_info = {
"token": "your_jwt_token" # 事前に取得したJWTトークン
}
# WordPressClientのインスタンスを作成
client = WordPressClient(wp_url, auth_method, auth_info)
# 新規記事を作成する
post_data = {
"title": "JWTで認証したブログ記事",
"content": "JWTを使って認証しています。",
"status": "publish"
}
post_id = client.create_post(**post_data)
print(f"新しい記事が作成されました。記事ID: {post_id}")
oauth1 認証の例
OAuth 1.0aを使用した認証方法です。requests_oauthlib
ライブラリを利用してOAuth1で認証を行います。この方法はよりセキュアな認証を提供しますが、設定が少し複雑です。
from requests_oauthlib import OAuth1
# 必要な情報を定義
wp_url = "https://your-wordpress-site.com"
auth_method = "oauth1"
auth_info = {
"consumer_key": "your_consumer_key", # WordPressサイトで生成したOAuth1のConsumer Key
"consumer_secret": "your_consumer_secret", # OAuth1のConsumer Secret
"token_key": "your_token_key", # 取得したOAuth1のToken Key
"token_secret": "your_token_secret" # OAuth1のToken Secret
}
# WordPressClientのインスタンスを作成
client = WordPressClient(wp_url, auth_method, auth_info)
# 新規記事を作成する
post_data = {
"title": "OAuth1認証で投稿した記事",
"content": "この投稿はOAuth1を使用して作成されました。",
"status": "publish"
}
post_id = client.create_post(**post_data)
print(f"新しい記事が作成されました。記事ID: {post_id}")
まとめ
今回は、WordPressの認証設定方法と新規記事の作成および更新に焦点を当てて解説しました。このコードを活用することで、効率的にWordPressサイトを管理できます。
次回は、投稿時にカテゴリーやタグ、日付を設定しやすくする方法を紹介します。