Разрешить пользователю редактировать сообщения, но не добавлять новые?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/2370

Вопрос

Для одного из моих пользовательских типов сообщений я хочу, чтобы конкретный пользователь имел возможность редактировать существующие сообщения, созданные 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-newpages-or-posts-link для справки

Другие советы

Предыдущий ответ только скрывает элемент меню с CSS, и, как указывает @ezejieldfm, он не остановит пользователей от фактически Возможность добавлять посты.

Вместо этого, при регистрации пользовательского типа сообщения вам нужно установить create_posts ценность do_not_allow (или же false В версиях WordPress ниже 4.5) и крайне установить 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 И хотя вы отключили возможность Добавить новое Сообщения, вы также не сможете редактировать или удалять существующие, поэтому обязательно включите это значение.

Полный кредит идет этот ответ На переполнении стека.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top