Для одного из моих настраиваемых типов сообщений я хочу, чтобы конкретный пользователь мог редактировать существующие сообщения, созданные администратором, но не мог добавлять новые сообщения.
Как это может быть сделано?
Если я определяю роль пользователя как неспособную к публикации, она по-прежнему позволяет им добавлять новую публикацию и отправлять ее на рассмотрение.
Вам нужно будет сделать что-то вроде этого:
См.: http://erisds.co.uk/wordpress/spotlight-wordpress-admin-menu-remove-add-new-pages-or-posts-link для справки.
Одно предостережение: пользователь по-прежнему сможет добавить новую запись, если он перейдет на страницу напрямую, это просто удалит кнопку, а не возможность пользователя добавлять новые записи.
проблема с этим подходом заключается в том, что как только я включаю create_posts в массив возможностей, я не могу отобразить список своего пользовательского типа сообщений, поэтому я даже не могу их редактировать…
Предыдущий ответ только скрывает пункт меню с помощью CSS, и, как указывает @ezejielDFM, это не помешает пользователям фактически добавлять сообщения.
Вместо этого при регистрации пользовательского типа сообщения вам необходимо установить
create_posts
значениеdo_not_allow
(илиfalse
в версиях WordPress ниже 4.5) и, что крайне важно, установитьmap_meta_cap
значениеtrue
.Если не указано
map_meta_cap
, по умолчанию используется значение,false
и, хотя вы отключили возможность добавления новых сообщений, вы также не сможете редактировать или удалять существующие, поэтому обязательно включите это значение.Полная заслуга принадлежит этому ответу о переполнении стека.