web-dev-qa-db-ja.com

ユーザーに投稿の編集を許可し、新規追加を許可しない

私のカスタム投稿タイプの1つでは、特定のユーザーがadminによって作成された既存の投稿を編集できるようにしたいが、新しい投稿を追加できないようにしたいです。

どうすればこれができますか?

ユーザーロールを公開できないと定義した場合でも、新しい投稿を追加してレビュー用に送信できます。

4
fxfuture

あなたはこのようなことをしなければならないでしょう:

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 参考のため

3
sorich87

前の答えはCSSでメニュー項目を隠すだけです、そして@ezejielDFMが指摘するように、それはユーザーが実際に投稿を追加できることを止めません。

代わりに、カスタム投稿タイプを登録するときは、create_posts値をdo_not_allow(または4.5より下のWordpressバージョンではfalse)に設定し、map_meta_captrueに決定的に設定する必要があります。

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の この答え に行きます。

5
indextwo