Так что у меня есть некоторые проблемы с этим, и я не могу понять, почему. Мне просто нужна пользовательская роль, которая может получить доступ к блогу в конце.
Я добавил новый тип записи с типом Capability blog
и новую роль пользователя со всеми прописными буквами, которые позволили бы пользователям с правами администратора добавлять / редактировать пользовательский тип записи. Это работает для администраторов, и они могут получить доступ к типу поста в конце. Однако пользователи моей пользовательской роли вообще не могут попасть в бэкэнд.
Тип сообщения Аргументы примечания
"capability_type" => 'blog',
"map_meta_cap" => true,
Регистрация роли
function add_blog_manager_role(){
add_role(
'blog_manager',
'Blog Manager',
array(
'read' => true,
'edit_posts' => false,
'delete_posts' => false,
'publish_posts' => false,
'upload_files' => true
)
);
}
add_action( 'admin_init', 'add_blog_manager_role', 4 );
Добавить заглавные буквы
function add_blog_role_caps() {
$roles = array('blog_manager', 'editor','administrator');
foreach($roles as $the_role) {
$role = get_role($the_role);
$role->add_cap( 'read' );
$role->add_cap( 'read_blog');
$role->add_cap( 'read_private_blog' );
$role->add_cap( 'edit_blog' );
$role->add_cap( 'edit_others_blog' );
$role->add_cap( 'edit_published_blog' );
$role->add_cap( 'publish_blog' );
$role->add_cap( 'delete_others_blog' );
$role->add_cap( 'delete_private_blog' );
$role->add_cap( 'delete_published_blog' );
}
}
add_action('admin_init', 'add_blog_role_caps', 5 );
Я отчаянно гуглил, пытаясь найти причину этого. Я пробовал с множественными, не множественными заглавными буквами, пытался добавить возможности в аргументы типа post. Однако я никогда не смогу попасть в заднюю часть. У меня нет другого кода в теме, который мог бы выкинуть пользователей из админа (я удалил свой собственный код, который выгонял их во время тестирования)
Edit Здесь вы можете увидеть дамп возможностей blog_manager из базы данных, там есть немало тестов BS, но они не должны помешать им войти в систему из того, что я знаю.
'blog_manager' => array (
'name' => 'Blog Manager',
'capabilities' => array (
'read' => true,
'edit_posts' => false,
'delete_posts' => false,
'publish_posts' => false,
'upload_files' => true,
'read_blog' => true,
'read_private_blog' => true,
'edit_blog' => true,
'edit_others_blog' => true,
'edit_published_blog' => true,
'publish_blog' => true,
'delete_others_blog' => true,
'delete_private_blog' => true,
'delete_published_blog' => true,
'blog' => true,
'read_private_blogs' => true,
'edit_blogs' => true,
'edit_others_blogs' => true,
'edit_published_blogs' => true,
'publish_blogs' => true,
'delete_others_blogs' => true,
'delete_private_blogs' => true,
'delete_published_blogs' => true,
'delete_blogs' => true,
'delete_blog' => true,
),
)
источник
Ответы:
Трудно устранить неполадки в приведенном выше коде, потому что это только часть фактического кода, но вот минимальный плагин, необходимый для регистрации пользовательского типа публикации (называемого «Пример») и пользовательской роли (Blog Manager), которая имеет доступ к пользовательскому типу публикации «Пример». ,
Это также можно использовать как часть файла functions.php темы. Просто используйте вместо этого крючки активации и деактивации темы.
источник
Если вы в порядке с плагином, вы можете использовать Velow плагин.
https://wordpress.org/plugins/capability-manager-enhanced/
источник