管理領域の投稿タイプへのアクセスを特定のユーザーロールに制限する方法はあまりわかりません。
私の場合は、 "著者"に見せたくない "サプライヤ"などの投稿タイプがあります。
デフォルトでWPは著者が自分のコンテンツを閲覧、追加、編集することを可能にします。しかし、私は私の作者が "サプライヤ"を追加したり、他の管理者からのエントリを閲覧したりしたくはありません。
私はWordpressのコードとコーデックスを調べました。 http://codex.wordpress.org/Function_Reference/register_post_type
register_post_type( 'supplier', $args )
には次のように$ argsで定義しようとしたパラメータがあるようです。もちろん私の投稿タイプがうまく機能しているので、ここでリストする必要はないと思う他の変数もあります。
'capabilities' => array( 'edit_others_posts' ),
'map_meta_cap' => true,
私は"map_meta_cap"
パラメータを完全に理解していません - 私は'edit_others_posts'
を指示することによって単純な作者による「サプライヤ」のアクセスを禁止するのに十分であった(実際には他の投稿を編集できません)。私はこれをテストしたがうまくいかない。作成者は、まだ管理領域のすべての「サプライヤ」コンテンツを表示し、まるでブログ投稿のようにサプライヤを追加できます。
作成者(または他の特定のユーザーロールまたは特定の機能を持たないユーザー)が、自分が作成した特定のカスタム投稿タイプの下でコンテンツにアクセスして追加することを防ぐ方法を教えてください。
ありがとうございました
あなたの質問に対する解決策としては、register_post_type
引数にcapability_type
パラメータを使用してください。そして、特定の機能をユーザーに付与してください。たとえば、'capability_type' => 'supplier'
を設定した場合は、edit_supplier
機能をすべての管理者にのみ付与します。
capabilities
は、'edit_post' => 'edit_supplier'
の形式で機能の配列を取ります
これは基本的に、コアコードが以前にedit_post
機能を使用していたところはどこでもedit_supplier
を使用することを意味します(管理者を含むすべてのユーザーにedit_supplier
機能を付与する必要があります。
capabilities配列を提供せず、&map_meta_cap
がtrueの場合、wordpressは提供されたcapability_type
値からデフォルトのcapabilities配列を生成します。
[edit_post] => "edit_{$capability_type}"
[read_post] => "read_{$capability_type}"
[delete_post] => "delete_{$capability_type}"
[edit_posts] => "edit_{$capability_type}s"
[edit_others_posts] => "edit_others_{$capability_type}s"
[publish_posts] => "publish_{$capability_type}s"
[read_private_posts] => "read_private_{$capability_type}s"
[delete_posts] => "delete_{$capability_type}s"
[delete_private_posts] => "delete_private_{$capability_type}s"
[delete_published_posts] => "delete_published_{$capability_type}s"
[delete_others_posts] => "delete_others_{$capability_type}s"
[edit_private_posts] => "edit_private_{$capability_type}s"
[edit_published_posts] => "edit_published_{$capability_type}s"
{$capability_type}
は指定した値です。 map_meta_cap
がfalseの場合、wordpressはcapability_type
パラメータを完全に無視します(または 'post'と見なしてからmap_meta_cap
を使用します)。