三題噺っぽいタイトルだけど、はまったのでメモ。
Wordpressは外部から記事を操作する仕組みとしてXMLRPCが提供されている。XMLPRC経由とはいえど、記事を操作するときにはユーザIDとパスワードを指定する必要がある。
Wordpressに標準設定されている権限を強い方から順番に……
- 管理者 / admin …… すべてOK(ユーザ作成やテーマ編集)
- 編集者 / editor …… カテゴリ編集、記事の編集(他人のものも)、コメントの承認ができるようになる
- 作成者 / author …… ファイルアップロードと記事の編集/公開ができるようになる
- 投稿者 / contributor …… 記事の作成/編集(公開はできない)ができる
- 購読者 / subscriber …… 読者
正直、管理者の権限はまだ理解できるけど、編集者/作成者/投稿者の権限は字面を読んだだけでは理解できなかった。大まかな整理は上記で大丈夫なはず。詳細についてはWordpress Codexを参照。
そして、もちろんXMLRPCで投稿するときも権限が関係してくる。XMLRPCから投稿して公開させるにはpublish_postsに対する権限が必要になってくるので権限:作成者(author)以上のユーザで使う必要があり。
権限が足りない場合、XMLRPCでエラーのリターンコード:401が帰ってくる。ただ、公開されている記事を取得する場合(metaWeblog.getPost)とかでも、権限的には購読者(subscriber)以上であれば問題の無いはずなのに、リターンコード:401。
時間の都合上 深く追っかけることができずに、XMLRPCを操作するユーザIDに管理者(admin)権限を割り当てて解決させてしまった。
SSLを使用していないのでパスワードが漏れて~とか考えたのが原因。仕事であればきっちりと権限を絞る&セキュアである必要があるけど、金銭が絡まないし消されたとしても趣味でやっている範囲なので、なにがあっても別段に問題はないので今回の対応でOKとしたい。
Roles and Capabilities
http://codex.wordpress.org/Roles_and_Capabilities



