具有自己的页面编辑功能的自定义角色

时间:2016-01-27 作者:Janica

我需要创建一个自定义角色,该角色只能编辑和发布自己的页面(由管理员创建并随后分配给具有自定义角色的用户的页面)。

我已经成功创建了新角色,该角色下的用户可以编辑自己的页面并发布它,但面板中的“力量”仍然太大。该角色可以访问评论、帖子创建、页面创建、工具和插件Timeline Express。我将其与contributor面板进行了比较,最后一项(插件时间线快车)没有显示在这个角色上。

为了实现我的目标,我花了一些时间阅读WordPress文档和网络论坛,但我仍然没有做到这一点。我知道有一些插件可以提供这种功能,但我需要一件简单的事情,我相信没有必要“买一辆法拉利过街”。

我在儿童主题上做这些改变functions.php:

remove_role( \'Supervisor\');

$result = add_role( 
    \'Supervisor\', 
    __( \'Supervisor\' ), 
    array( 
        \'read\' => true, 
        \'edit_pages\' => true, 
        \'publish_pages\' => true, 
        \'edit_published_pages\' => true,
        \'create_pages\' => false,
    ) 
);
你能帮我看看吗?

2 个回复
SO网友:Janica

我通过一点“补丁”解决了这个问题,这要感谢对这两个线程的解释:Remove ability to access certain admin menus &;Hide Admin menus per role in Wordpress

我在restrict\\u菜单功能中添加了我需要禁止访问的项目,并在remove\\u菜单中隐藏了我能够访问的列表项目。我还将此角色处于活动状态时启动的管理样式表排入队列,并隐藏显示的插件项。

这是我现在的最终代码:

//remove_role( \'Supervisor\'); // developing purposes only

$result = add_role( \'Supervisor\', 
__(\'Supervisor\' ),
  array( 

 \'read\' => true,
 \'create_posts\' => false,
 \'create_pages\' => false,
 \'moderate_comments\' => false,
 \'edit_pages\' => true, 
 \'publish_pages\' => true,
 \'edit_published_pages\' => true,
) 
);

function restrict_menus(){

$author = wp_get_current_user();
 if(isset($author->roles[0])){ 
 $current_role = $author->roles[0];
}else{
$current_role = \'no_role\';
}

if($current_role == \'Supervisor\'){  

$screen = get_current_screen();
$base = $screen->id;


if($base == \'edit-post\' || $base == \'tools\' || $base == \'edit-comments\' || 
$base == \'page\' && $action == \'add\' || $base == \'te_announcements\' && $action == \'add\')
{  
wp_die(\'Não tem permissões para aceder a esta área\');
}
}

}

add_action( \'current_screen\', \'restrict_menus\' );

function remove_menus()
{
global $menu;

$author = wp_get_current_user();
if(isset($author->roles[0])){ 
$current_role = $author->roles[0];
}else{
$current_role = \'no_role\';
}

if($current_role == \'Supervisor\')
{
$restricted = array(__(\'Comments\'),
                    __(\'Appearance\'),
                    __(\'Plugins\'),
                    __(\'Tools\'),
                    __(\'Settings\'),
                    __(\'Posts\'),

);
end ($menu);
while (prev($menu)){
    $value = explode(\' \',$menu[key($menu)][0]);
    if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
}// end while

}// end if
}
add_action(\'admin_menu\', \'remove_menus\');
如果有人有更好的办法,请告诉我。

SO网友:Vasim Shaikh

是的,我对你不太好。这可能会有帮助。

http://easywebdesigntutorials.com/creating-a-custom-user-role/

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register