私のカスタム投稿タイプの1つでは、特定のユーザーがadminによって作成された既存の投稿を編集できるようにしたいが、新しい投稿を追加できないようにしたいです。
どうすればこれができますか?
ユーザーロールを公開できないと定義した場合でも、新しい投稿を追加してレビュー用に送信できます。
あなたはこのようなことをしなければならないでしょう:
function hide_buttons() {
global $current_screen;
if($current_screen->id == 'edit-post' && !current_user_can('publish_posts')) {
echo '<style>.add-new-h2{display: none;}</style>';
}
}
add_action('admin_head','hide_buttons');
参照してください: http://erisds.co.uk/wordpress/spotlight-wordpress-admin-menu-remove-add-new-pages-or-posts-link 参考のため
前の答えはCSSでメニュー項目を隠すだけです、そして@ezejielDFMが指摘するように、それはユーザーが実際に投稿を追加できることを止めません。
代わりに、カスタム投稿タイプを登録するときは、create_posts
値をdo_not_allow
(または4.5より下のWordpressバージョンではfalse
)に設定し、map_meta_cap
をtrue
に決定的に設定する必要があります。
register_post_type( 'custom_post_type_name', array(
'capability_type' => 'post',
'capabilities' => array(
'create_posts' => 'do_not_allow', // Prior to Wordpress 4.5, this was false
),
'map_meta_cap' => true, // With this set to true, users will still be able to edit & delete posts
));
map_meta_cap
が省略されている場合、デフォルトはfalse
になります。また、新規投稿を追加する機能は無効になっていますが、既存の投稿を編集または削除することもできません。その値を含めるようにしてください。
フルクレジットはStack Overflowの この答え に行きます。