WordPressのRESTAPIでアプリケーションパスワードの認証がとおらないなら

本ページにはプロモーションが含まれています。
WordPress

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に追加してみるとよいです。

コメント

タイトルとURLをコピーしました