WordPressのRESTAPIでアプリケーションパスワードの認証がとおらないなら
結論、
.htaccessに以下を追記する。
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
場所は、
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On
の下とか。
WordPressでREST APIでPOSTする時に使う認証パスワード
Application Passwordsというプラグインでアプリケーションパスワードを作成。
ユーザー名はログインユーザー名と同じで、REST API用のパスワードを生成してくれます。
プラグインを有効化すると、ユーザーページの一番下にパスワード生成欄が表示されます。
「名前」は何でもOK。実際の認証に使うのは、Wordpressのユーザー名です。
パスワードは、前後に半角ブランクあるように表示されたんですが、半角ブランクは無し。
WordPressのREST APIを使ってpythonで記事投稿・更新する
新規投稿なら「POSTID」は不要。
更新なら、更新したいpost_idを「POSTID」箇所に指定します。
import requests import json password = "パスワード" user_id = "ユーザー名" url = 'https://hogehoge.hoge/wp-json/wp/v2/posts/POSTID' title = "タイトル" content = """本文ぜお """ data = json.dumps({'title': title, 'content' : content}) headers = {'content-type': "Application/json"} res = requests.post(url, data=data, headers=headers, auth=(user_id,password)) print(res.text)
エラーメッセージ
認証が通らない時、こんなエラーメッセージが出たりします。
「このユーザーとして投稿を編集する権限がありません。」
ユーザー名、アプリケーションパスワード等、おそらく正しいにも関わらず、このエラーが出る場合は、POSTのヘッダーに付与したベーシック認証が欠落しちゃってる可能性が高いので、上記、htaccessに追加してみるとよいです。
コメント