Разрешить пользователю редактировать сообщения, но не добавлять новые?
-
16-10-2019 - |
Вопрос
Для одного из моих пользовательских типов сообщений я хочу, чтобы конкретный пользователь имел возможность редактировать существующие сообщения, созданные 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
И хотя вы отключили возможность Добавить новое Сообщения, вы также не сможете редактировать или удалять существующие, поэтому обязательно включите это значение.
Полный кредит идет этот ответ На переполнении стека.