web-dev-qa-db-ja.com

特定のCPTに制限されたユーザーロールを作成する

CPTのみを作成して送信できる役割を作成しようとしています。ロールからedit_postを削除すると、割り当てられて登録されているCPTも作成および編集することができなくなります。私は、ロールにedit_CPTs機能を登録して割り当てました。だから基本的に、私はこれを持っています:

edit_cpt
edit_cpts

私は奪った

edit_posts

しかし、一度私がedit_postsを削除すると、ロールはダッシュボードインターフェースのCPTを見ることさえできません。任意の助けは大歓迎です。

2
Ollie

CPTをカスタム機能に登録してから、その特定の上限をユーザーに割り当てる必要があります。

引数を register_post_type に渡すときは、capability_typeを新しい機能に設定すると、チェックは'edit_cpts'ではなく'edit_post'になります。

'capability_type' => [ 'cpt', 'cpts' ]を設定することによって、 'cpt'は標準のケーパビリティチェックのために 'post'にマッピングされるので、通常 'edit_post'をチェックするところでは 'edit_cpt'をチェックします。

これまでに行ったように、ユーザー/ロールからプリミティブ'edit_posts'キャップを完全に削除するときは、 WP_Role::add_cap() を使用して新しいものを追加し、current_user_can( 'edit_cpts' )でそれを確認する必要があります。

3
Morgan Estes