Intereting Posts
Сколько SQL-запросов WP Super Cache позволяет обслуживать кешированную страницу? Тема WordPress / Buddypress неожиданно перестала работать Могу ли я использовать многопозиционные функции в односайтовой установке? Перемещение / перетаскивание метабокса устраняет содержимое TinyMCE WordPress Multisite: автоматический запуск импортера при создании нового сайта Я не могу форматировать текст на странице редактирования (или сообщения), что не так ..? Отображение продукта WooCommerce через PHP Пользовательский диалог TinyMCE с неработающим selectbox Восстановить префиксы формы Cforms II Определение того, где плагины используются в вашей программе WordPress Является ли WordPress достаточно большим для моего проекта Многостраничные сообщения: Подкаталог для каждого сообщения? Неправильное имя пользователя и пароль при установке темы Условный add_filter? Как регистрировать действия плагина (cron)?

Как ограничить определенные типы сообщений чтением или добавлением определенных пользовательских ролей (например, автора)?

Я не совсем понимаю, как ограничить доступ к типам почтовых ящиков администратором доступ к определенным ролям пользователей.

В моем случае у меня есть такой тип сообщения, как «поставщики», который я не хочу показывать «авторам».

По умолчанию WP позволяет авторам просматривать, добавлять или редактировать собственный контент. Но я не хочу, чтобы мои авторы добавляли «поставщик» или просматривали записи от других администраторов.

Я просмотрел код WordPress и код: http://codex.wordpress.org/Function_Reference/register_post_type

кажется, есть параметр в register_post_type( 'supplier', $args ) , который я попытался определить в $ args следующим образом, среди прочих переменных, которые, как мне кажется, мне не нужно перечислять, поскольку мой тип сообщения работает штраф:

  'capabilities' => array( 'edit_others_posts' ), 'map_meta_cap' => true, 

Я не полностью понял параметр "map_meta_cap" – я предположил, что, указав 'edit_others_posts' , хватило бы, чтобы запретить доступ «поставщиков» простым авторам (что фактически не может редактировать записи других). Я тестировал это и не работал. Авторы все еще могут видеть все содержимое «поставщиков» в области администрирования и добавлять поставщика, как если бы это была запись в блоге.

Как я могу запретить авторам (или любой другой конкретной роли пользователя или пользователям без определенных возможностей) получать доступ и добавлять контент в соответствии с конкретными типами сообщений, которые я создал?

Спасибо

Solutions Collecting From Web of "Как ограничить определенные типы сообщений чтением или добавлением определенных пользовательских ролей (например, автора)?"

Для решения вашего вопроса в аргументах register_post_type используйте параметр capability_type и затем предоставите пользователям определенные возможности. Например, если вы установили 'capability_type' => 'supplier' edit_supplier 'capability_type' => 'supplier' , предоставите edit_supplier для всех администраторов

Подробнее

capabilities берут массив возможностей в формате 'edit_post' => 'edit_supplier'

Это в основном означает, что везде, где основной код ранее использовал edit_post , теперь он будет использовать edit_supplier (вам нужно предоставить возможность edit_supplier всем пользователям, включая администраторов, WordPress не делает этого для вас)

если вы не предоставили возможности array & map_meta_cap это правда, тогда WordPress будет генерировать массив возможностей по умолчанию из предоставленного значения параметра_имости, как это

 [edit_post] => "edit_{$capability_type}" [read_post] => "read_{$capability_type}" [delete_post] => "delete_{$capability_type}" [edit_posts] => "edit_{$capability_type}s" [edit_others_posts] => "edit_others_{$capability_type}s" [publish_posts] => "publish_{$capability_type}s" [read_private_posts] => "read_private_{$capability_type}s" [delete_posts] => "delete_{$capability_type}s" [delete_private_posts] => "delete_private_{$capability_type}s" [delete_published_posts] => "delete_published_{$capability_type}s" [delete_others_posts] => "delete_others_{$capability_type}s" [edit_private_posts] => "edit_private_{$capability_type}s" [edit_published_posts] => "edit_published_{$capability_type}s" 

где {$capability_type} – это значение, которое вы указали. Если map_meta_cap имеет значение false, wordpress полностью игнорирует параметр capability_type (или, скажем, считать его «post», а затем использовать map_meta_cap )