Pythonで自動投稿プログラムを書いていたときに出現したエラー。
自動投稿したかったのに、このエラーで投稿できず。。。
結論
私の場合は、WordPressの設定から、「パーマリンク」設定画面を開き、何も変更せずに「変更を保存」ボタンをクリックしただけ。
これで再度プラグラムを実行すると、無事に実行され、投稿できました。
やっていたこと、出現したエラー
WordPressのエンドポイントを指定して、認証情報を定義し、
以下のコード(一部のみ掲載)でPythonプログラムを実行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# Python コードは一部省略している ...(省略)... # 下書きとして投稿するデータ data = { 'title': '下書きのタイトル', 'content': '下書きの内容', 'status': 'draft'# draft=下書き、publish=公開 省略時はdraftになる } # POSTリクエストで下書き投稿 response = requests.post(endpoint, json=data, auth=(username, password)) # レスポンスのJSONデータを取得 post = response.json() # 投稿のIDを表示 print('ステータスコード:', response.status_code) print('レスポンス:',post) print('下書きが作成されました。ID:', post.get('id')) |
すると、以下のようにエラーが出る(以下はターミナル画面)
1 2 3 |
ステータスコード: 401 レスポンス: {'code': 'rest_cannot_create', 'message': 'このユーザーとして投稿を編集する権限がありません。', 'data': {'status': 401}} 下書きが作成されました。ID: None |
ブログのREST API設定とかいろいろ確認したが、問題ない。。。
どうしようと思って、ふと「パーマリンク設定」のことが頭をよぎり、試しに保存したところ、問題なく投稿された。。
1 2 3 |
ステータスコード: 201 レスポンス: <<. 省略 >> 下書きが作成されました。ID: 63 |
パーマリンク設定を一旦保存することで問題が解決した理由として考えられるもの
1. リライトルールの再生成
WordPressでは、パーマリンク設定を保存すると、リライトルール(URLの書き換えルール)が再生成されます。
これにより、REST APIのエンドポイントが正しく機能するようになることがあるようです。
特に、カスタムパーマリンクを使用している場合、リライトルールが正しく設定されていないと、APIリクエストが正しく処理されないことがあります。
2. キャッシュのクリア
パーマリンク設定を保存することで、WordPressの内部キャッシュがクリアされることがあります。これにより、古い設定やキャッシュされたデータが無効になり、新しい設定が反映されることがあります。
3. プラグインの干渉
他のプラグインがパーマリンク設定に依存している場合、設定を保存することでプラグイン間の干渉が解消されることがあります。特に、セキュリティプラグインやキャッシュプラグインが影響を与えることがあります。
4. データベースの更新
パーマリンク設定を保存することで、データベース内の設定が更新され、REST APIが正しく機能するために必要な情報が整うことがあります。
5. 一時的な不具合の解消
WordPressやプラグインの一時的な不具合が原因で、REST APIが正しく動作しなかった可能性もあります。パーマリンク設定を保存することで、これらの不具合が解消された可能性があります。
以上です。
パーマリンク設定を保存することは、WordPressの動作に影響を与えるさまざまな要因をリセットする効果があります。今後も問題が発生する場合は、同様の手順を試してみると良いかもしれません。