質問: array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'has_archive' => 'past-external-roles', 'rewrite' => array('slug' => 'external-roles','with_front' => false), 'query_var' => true, 'capability_type' => array('external_role', 'external_roles'), 'map_meta_cap' => true, 'hierarchical' => false, 'show_in_nav_menus' => false, 'menu_position' => 20, 'supports' => array( 'title', 'editor', 'author', 'custom-fields', 'revisions' ) ); register_post_type('external_role',$args); } capability_typeパラメータを見れば(私がそれを正しく理解していれば)、次の機能が生成されます。メタ機能 edit_external_role read_external_role delete_external_role 基本機能(メタ機能に基づいて生成されます): edit_external_role edit_others_external_role publish_external_role read_private_external_role それでは、管理者が新しいcptを完全に管理できるように、自分の能力をadminロールに引き上げたいと思います。私はmeta capabilitiesだけを壮大にするのであれば、すべてのprimitive capabilitiesがそのロールにも包括的に付与されることを意味するのではないかと私は考えていましたか?そうですか?これが、管理者ロールに機能を追加するためのものです。// add caps for administrator role $role =& get_role('administrator'); // external roles capabilities $role->add_cap('edit_external_role'); $role->add_cap('read_external_role'); $role->add_cap('delete_external_role'); しかし、これはうまくいきません。cptを管理する役割にすべての機能を追加するための簡潔で正しい方法は何ですか?ありがとう、ダーシャeditadminロールに上限を追加するためにfunctions.phpでinitフックを使用しています。add_action( 'init', 'my_custom_roles_capabilities', 0 ); function my_custom_roles_capabilities(){ // add caps for administrator role $role =& get_role('administrator'); // external roles capabilities $role->add_cap('edit_external_role'); $role->add_cap('read_external_role'); $role->add_cap('delete_external_role'); }
回答: external_roles_post_type_init()関数内で機能を定義してみましたか?後に'capability_type' => array('external_role', 'external_roles'), これを追加してみてください'capabilities' => array( 'publish_posts' => 'publish_external_roles', 'edit_posts' => 'edit_external_roles', 'edit_others_posts' => 'edit_others_external_roles', 'delete_posts' => 'delete_external_roles', 'delete_others_posts' => 'delete_others_external_roles', 'read_private_posts' => 'read_private_external_roles', 'edit_post' => 'edit_external_role', 'delete_post' => 'delete_external_role', 'read_post' => 'read_external_role', ), $ args配列の別の引数としてそれから、このロールまたはそのロールに機能を適用する前に、 user role editor plugin を試してみてください。機能が本当に存在するかどうかを確認してください。ロールに上限を付与または取り消すためのプラグインだけです。私はそれがコーディングのようではないことを知っていますが、実際には管理者用パネルのクリックで与えたり取り消したりする能力は本当に便利です。私はあなたにこれを教えます。時々(かなり頻繁に)、私はあなたが使用するのと全く同じ方法でカスタム投稿タイプを登録します(そして私が上で貼り付けたケーパビリティ配列)。 functions.phpファイルの登録機能を上に移動するだけで解決することがあります。それは私にとってもwichcraftのようですが、時々うまくいきます。私が見つけることができる唯一の解決策が user role editor と map cap プラグインの両方を使用することであるように私がデッドパスに自分自身を見つけるとき。私はそれが好きではありませんが、それは心を失うことよりも優れています。たとえそれが私があなたと共有している「混乱」状態を解決しなくても、それがあなたを助けてくれることを願っています。