我用CPTUI创建了“新闻”自定义帖子类型。 并使用这些功能添加“ news_manager”用户角色
edit_post
edit_posts
publish_posts
edit_others_posts
edit_published_posts
然后通过admin_menu操作基本上通过remove_menu_page阻止对某些页面的访问
remove_menu_page( 'index.php' );
remove_menu_page( 'edit.php?post_type=blog' );
然后将角色重定向到'edit.php?post_type = news'
function loginRedirect( $redirect_to, $request, $user ){
if ( current_user_can( 'news_manager' ) ) {
return "/wp-admin/edit.php?post_type=news";
}
return $redirect_to;
}
add_filter("login_redirect", "loginRedirect", 50, 3);
但是当我创建一个news_manager用户并使用该用户登录时。 URL重定向正确。但是遭到阻拦,wordpress说了这些
您没有足够的权限访问此管理页面。
原因:当前用户具有“ edit_posts”功能,即 需要访问“新闻→所有新闻”菜单项。
这些仅在edit.php页面上被阻止。如果访问特定帖子,则通过。例如'/ wp-admin / post.php?post = 22&action = edit'
据说用户可以查看但阻止访问。为什么?以及如何解决这些问题。
版本
答案 0 :(得分:0)
请在“当前主题”的function.php文件中尝试以下代码
function add_blog_role_caps() {
$roles = array('news_manager');
foreach($roles as $the_role) {
$role = get_role($the_role);
$role->add_cap( 'read_news');
$role->add_cap( 'edit_news' );
$role->add_cap( 'edit_others_news' );
$role->add_cap( 'edit_published_news' );
$role->add_cap( 'publish_news' );
$role->add_cap( 'delete_others_news' );
$role->add_cap( 'delete_private_news' );
$role->add_cap( 'delete_published_news' );
}
}
add_action('admin_init', 'add_blog_role_caps', 5 );