こんなこと稀だって。
どういうことか
カスタム投稿でブログとかコラム的なものを作り、投稿用のアカウント(author権限)で記事を投稿してた。その記事というのは色んな人が作っていたので、それぞれに署名を付けたいとなった。カスタムフィールドで枠を作ったので、任意の内容で署名を付けられるようになった。投稿が増えてきた辺りで、投稿者別の記事一覧ができるようにしたいということになった。
以前の記事はこの内容に関連する。
で、今回の件について思いつく方法は何パターンか出てくる。
タグで管理
投稿者をタグで登録し、選択に応じて内容を表示する感じにする。タグなら記事一覧も問題なく作れるわけで、一見楽で良さそうなんだけど、署名部分はsingle.phpなり外部ファイルなりに全部載せて選択肢により表示を振り分けることになるので、つまり追加とか変更がとんでもなくめんどくさい。管理画面上でビジュアル操作ができないので使い勝手が悪い。
ユーザーで管理
wpのユーザー機能を活用する。執筆者の情報はユーザーページで編集できるし追加も簡単だし、それぞれにアカウントを渡さなくても記事を書く際に「投稿者」を切り替えたら良いわけで。
ということで、以前の記事の通り、ユーザーを一括登録する手段だとか投稿者別の記事一覧ページだとかの下準備を行った。
やりたいこと
アカウントを大量に作ることになるため、色んな人が触ることになる。そうすると、余計なことをされたら面倒だなってことでリスクヘッジのために色々と制限をかけていきたい。
目指す機能は以下の通り
- 記事を投稿するアカウントは1つ
- 記事毎に投稿者(author)を変更できるようにする
- 記事を投稿するアカウントは特定のカスタム投稿のみ操作できる
- 記事毎に指定する投稿者(author)アカウントでログインすることは考えてない
- 記事毎に指定する投稿者(author)アカウントで投稿しても問題はない
- 記事毎に指定する投稿者(author)アカウントは特定のカスタム投稿以外操作できないようにしたい
まあとんでもなくだるい。ぶっちゃけ、完全に網羅できる仕組みは作れてない。できなくはないだろうけど。
これをやっていく。
限定的な権限の作成
権限の指定といえばこれ。

既存の権限とは違う組み合わせの権限を作ったり、特定アカウントに複数の権限を付与したりできる。
特定のカスタム投稿だけ操作できるようにする
前提として、CPT-UIで「ブログ」っていうカスタム投稿を作ったとする。
「設定」項目にある「権限タイプ」を「blog」にする。

新規に権限グループを作成して、全てのチェックを外す。
「カスタム投稿タイプ」の欄に「ブログ」の項目があるのでそれを選択して、その中のものを全部チェックする。以下の感じになる。末尾は権限タイプに紐づくんだけど、「s」がつくのでちょっとビビる。

※カスタム投稿の権限タイプは標準では「post」で、同名のチェック項目は共通の設定になる。だから権限タイプを変えずにチェックすると他の投稿関係にも作用してしまう。
次に「すべて>コア>一般」にいって、画像のとおりにチェック。

これにチェックを入れないと「メディア」が使えなかったり、タクソノミーを操作できなかったりする。
投稿用の権限は以上で完成、ユーザーを新規作成して権限をこれにする。
他のアカウントから「投稿者」で選択できるアカウント
「author」以上の権限がないと選択できないっぽい。なので、他のアカウントから選択する前提のユーザーを作る場合はそのようにする必要がある。初めから「author」で作る他、「user role editor」は権限を複数付ける機能があるので、それで対応する事もできる。
- 該当のユーザー編集ページに行く
- 「追加機能」の「他の権限グループ」で「投稿者」を選択
- 内容を保存する

単純に上位権限を被せるなら置き換えたほうが混乱しづらいし話も早いんだけどね。
コメント