Intereting Posts
Фильтр сообщений WordPress Передать параметр на подключенную функцию с помощью настраиваемого шаблона страницы Должны ли мы использовать get_template_part () в файлах функций вместо include_once? file.php не загружен? Почему the_content не работает, как другие, для заданного идентификатора сообщения? Метаданные метаданных не отображаются wordpress wp_enqueue_script () не работает Ребенок и редактор Jetpack Запрос Mysql для удаления дубликатов сообщений WordPress? Удалите поиск post_content из предложения WHERE (и функции CONCAT sql) WordPress wp-admin неожиданно потерял свой стиль Добавление категории в четные позиции на основной петле с измененной разбиением на страницы Почему эта проверка позволяет проверить, разрешено ли пользователю редактировать сообщение, для всех, кроме супер-администраторов? Перенаправление пользователей вдали от проломов администратора ajax Добавить атрибут для тега ссылки, который создается через wp_register_style?

Создание пользовательских ролей пользователя

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

Я немного запутался в том, как создать новую роль или возможности для достижения этой цели. Как / с чего начать?

благодаря

UPDATE: я добавил их к пользовательской функции сообщения, как это предложил Эрик Холмс

'capabilities' => array( 'edit_posts' => 'edit_helps', 'edit_post' => 'edit_help', 'read_post' => 'read_helps', ), 

Добавили их к ключу активации плагина, а наоборот – к деактивации (я сам изменяю роль автора):

 function modify_user_capabilities() { $role = get_role( 'contributor' ); $role->remove_cap( 'delete_posts' ); $role->remove_cap( 'edit_posts' ); $role->add_cap('edit_helps'); $role->add_cap('edit_help'); $role->add_cap('read_helps'); } register_activation_hook( __FILE__, 'modify_user_capabilities' ); 

Теперь только вкладчик может редактировать этот тип сообщения, а не другие пользователи (например, admin)

Есть ли лучший способ пакетной передачи им этих возможностей? Я отредактировал мой крючок активации:

 function modify_user_capabilities() { $role = get_role( 'contributor' ); $role->remove_cap( 'delete_posts' ); $role->remove_cap( 'edit_posts' ); foreach (array('administrator', 'editor', 'author', 'contributor') as $user_role) { $role = get_role($user_role); $role->add_cap('edit_helps'); $role->add_cap('edit_help'); $role->add_cap('read_helps'); } } 

ОБНОВЛЕНИЕ 2: Я полностью забыл назначить кого-то для удаления сообщений. Поэтому я обновил функцию:

 function modify_user_capabilities() { //remove the contributor from editing any post $role = get_role( 'contributor' ); $role->remove_cap( 'delete_posts' ); $role->remove_cap( 'edit_posts' ); foreach (array('administrator', 'editor', 'author', 'contributor') as $user_role) { $role = get_role($user_role); $role->add_cap('edit_helps'); $role->add_cap('edit_help'); $role->add_cap('read_helps'); } //let admins delete posts $role = get_role('administrator'); $role->add_cap('delete_helps'); $role->add_cap('delete_publised_helps'); $role->add_cap('delete_others_helps'); $role->add_cap('delete_help'); } 

Теперь администратор может удалить эти сообщения.

Solutions Collecting From Web of "Создание пользовательских ролей пользователя"

Добавление роли очень просто. Создание пользовательских возможностей – это немного больше, чтобы обернуть голову. Когда вы регистрируете свой собственный тип сообщений , вы определяете свои возможности для него. По сути, это массив «что вы хотите считать этим?». Мой пример ниже прояснит это утверждение.

 $caps = array( 'edit_post' => 'edit_cpt_name', 'edit_posts' => 'edit_cpt_names', 'manage_posts' => 'manage_cpt_names', 'publish_posts' => 'publish_cpt_names', 'edit_others_posts' => 'edit_others_cpt_names', 'delete_posts' => 'delete_cpt_names' ); 

Таким образом, вы, очевидно, замените «cpt_name» своим slug вашего типа сообщения (или что-нибудь, что вы действительно хотите). Элементы слева – имена возможностей по умолчанию (их больше, поэтому обратитесь к записи register_post_type в кодексе). Независимо от возможностей, которые вы заявляете в своей пользовательской регистрации типа записи, вам также необходимо предоставить роли пользователя этим возможностям:

 add_role('basic_contributor', 'Basic Contributor', array( 'read' => true, 'edit_posts' => false, 'edit_cpt_name' => true, // True allows that capability 'edit_cpt_names' => true, 'publish_cpt_names' => true, 'edit_others_cpt_names' => false, // Use false to explicitly deny 'delete_cpt_names' => false ));