質問: 特定のcptに制限されたユーザーロールを作成する cptのみを作成して送信できる役割を作成しようとしています。ロールからedit_postを削除すると、割り当てられて登録されているcptも作成および編集することができなくなります。私は、ロールにedit_cpts機能を登録して割り当てました。だから基本的に、私はこれを持っています:edit_cpt edit_cpts 私は奪ったedit_posts しかし、一度私がedit_postsを削除すると、ロールはダッシュボードインターフェースのcptを見ることさえできません。任意の助けは大歓迎です。
回答: 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' )でそれを確認する必要があります。