首先,我是一名WordPress学习者。如果我的代码看起来很蠢,我很抱歉!
我创建了一个具有自定义用户角色的自定义主题。我没有开发任何插件。
在我的职责范围内。php文件我编写了以下代码来创建用户角色。分配给此角色的用户应该登录到管理员,但只能访问其配置文件页面。
add_action(\'init\', \'yrc_cst_register_role_customer_service_rep\');
/**
* Register new user role
*/
function yrc_cst_register_role_customer_service_rep() {
$wp_roles = new WP_Roles();
$wp_roles->remove_role(\'subscriber\');
$wp_roles->remove_role(\'editor\');
$wp_roles->remove_role(\'contributor\');
$wp_roles->remove_role(\'author\');
$service_rep_caps = array(
\'read\' => false,
\'create_posts\' => false,
\'edit_posts\' => false,
\'edit_others_posts\' => false,
\'publish_posts\' => false,
\'manage_categories\' => false,
\'manage_options\' => false,
);
add_role(\'customer_service\', __(\'Customer Service\'), $service_rep_caps);
}
我已删除除管理员以外的所有角色,因为此门户不需要其他角色。管理员将仅创建具有
Customer Service 角色
我没有在系统中安装第三方插件。
具有自定义角色的用户可以通过工作正常的自定义登录页面登录到系统。但每当他们试图访问其个人资料页面时,就会出现以下错误消息:
抱歉,不允许您访问此页面。
有类似的吗\'edit_profile\' => true
?
我一定是做错了什么,但我有限的知识还不足以解决这个问题。如有任何建议,将不胜感激。
最合适的回答,由SO网友:websupporter 整理而成
这个read
能力必须设置为true
, 这样他们就可以访问。
请记住,在每个init
操作,这被认为是非常耗时的。
法典建议在register_activation_hook()
. 由于您在主题中使用此代码,您可能需要检查角色是否存在。
由于您是在主题中运行此功能,因此这可能是一种解决方法:
function yrc_cst_register_role_customer_service_rep() {
$wp_roles = new WP_Roles();
//$wp_roles->remove_role(\'customer_service\'); // Remove it only for test purposes.
if ( $wp_roles->is_role( \'customer_service\' ) ) {
return;
}
$wp_roles->remove_role(\'subscriber\');
$wp_roles->remove_role(\'editor\');
$wp_roles->remove_role(\'contributor\');
$wp_roles->remove_role(\'author\');
$service_rep_caps = array(
\'read\' => true,
);
add_role(\'customer_service\', __(\'Customer Service\'), $service_rep_caps);
}