在您的情况下,最好的解决方案是创建您自己的客户角色,并仅为他们分配您用户需要的功能。关于wordpress,从你的问题中我可以理解,你应该给他们的唯一能力是read
.
这样,他们将只看到配置文件。问题从插件开始,你没有说(或者我不明白)你正在使用哪个插件,所以我无法提供更好的帮助。
考虑到很大程度上取决于插件的编码方式:如果它检查一些标准功能,例如,您在代码中发现
if ( currrent_user_can(\'edit_posts\') ) { // do stuff
这意味着要使其工作,您必须分配
edit_posts
以您的角色为上限。但这是一个问题:如果您分配该功能
Post
将显示admin中的菜单。当然,您可以使用
remove_menu_page
, 但正如您在问题中所说,如果用户知道如何操作,这不会阻止他们直接访问管理屏幕。
因此,我建议您:
创建您的自定义角色,从仅分配给该角色开始read
cap查看插件的文档和/或查看代码以了解使其工作所需的功能将这些必需的功能添加到您的角色中。如果需要一些标准大写字母,(因此将显示一些标准菜单,请使用remove_menu_page
在这种情况下,为了防止直接访问,由于您创建了一个自定义角色,您可以防止对管理员屏幕的访问挂接到load-{$page}
操作并阻止访问自定义角色在后端,访问Settings -> General
并将“自定义角色”设置为新用户默认角色
$subscriber = get_role( \'subscriber\');
$plugin_caps = array(\'edit_posts\', \'cap_required_by_event_plugin\');
$all_caps = array_merge($subscriber->capabilities, $plugin_caps);
add_role(\'custom_role\', \'Custom Role\', $all_caps );
了解插件所需的功能查看插件文档。在plugins文件夹中进行多文件搜索,搜索关键字,如
\'current_user_can\'
,
\'user_can\'
,
\'has_cap\'
. 如果您有问题,请尝试在插件支持论坛上询问(如果存在),请在此处询问并用谷歌搜索。开发人员很努力!;)
3) 为您的角色添加所需的功能最简单的方法就是将所需的cap添加到$plugin_caps
在点1上定义的数组)。
4) 如果您必须添加edit_posts
限制您的角色以使事件插件正常工作。首先,删除菜单。
add_action( \'admin_menu\', \'custom_remove_menu_pages\' );
function custom_remove_menu_pages() {
$user = wp_get_current_user();
if ( in_array(\'custom_role\', $user->roles) ) {
remove_menu_page(\'edit-comments.php\');
remove_menu_page(\'tools.php\');
remove_menu_page(\'edit.php\');
}
}
然后阻止访问:
add_action( \'load-edit.php\', \'custom_prevent_admin_access\' );
add_action( \'load-tools.php\', \'custom_prevent_admin_access\' );
add_action( \'load-post.php\', \'custom_prevent_admin_access\' );
add_action( \'load-post-new.php\', \'custom_prevent_admin_access\' );
function custom_prevent_admin_access() {
$user = wp_get_current_user();
if ( in_array(\'custom_role\', $user->roles) ) {
wp_die("Sorry, you can\'t stay here.");
exit();
}
}
将“自定义角色”设置为新用户默认角色
就这些,希望能有所帮助。