欢迎转载!转载时请注明出处:http://blog.youkuaiyun.com/nfer_zhuang/article/details/51285531
引言
在项目中,我们所有的页面都是通过自定义模板并创建响应的页面来实现的,那么就需要在某些页面添加指定用户的访问权限。
首先,这里并没有使用wordpress自带的用户组权限,因为根据业务需要,会出现页面和用户的N*M组合,使用用户组的话完全不够用。
方法一
实现思路:
- 获取当前登录的用户名
- 在模板文件中,使用一个数组保存拥有访问权限的用户名列表
- 判断当前登录的用户是否在权限列表中
$user = wp_get_current_user();
$user_login = $user->user_login;
$manager_user_logins = array('user1', 'user2', 'user3');
if (!in_array($user_login, $manager_user_logins)) {
return "<p>你没有权限使用该页面,请联系管理员。</p>";
}
这种实现方式非常的简单,也是我在项目中最开始使用的方法。
但是这种方式有一个很严重的问题:设置和代码耦合。
具体表现就是,每次需要修改指定页面的权限用户列表时,都必须直接修改代码源文件(肯定也会引起版本改动)。那么,维护人员就无法自由的进行页面设置。
方法二
后来,我了解到Wordpress的页面(也是post的一种)是有一个自定义字段(Custom_Fields)的,关键这个自定义字段是可以在页面的编辑界面进行修改。
因此,改进后的方法就是,在自定义字段中添加了一个valid_user字段,然后使用逗号(,)分隔用户名的方式保存所有拥有权限的用户名。
代码的判断部分如下:
$post = get_post();
$valid_user = get_post_meta( $post->ID, "valid_user", true );
$valid_user_array = explode( ',', $valid_user );
$user = wp_get_current_user();
if ( !in_array( $user->user_login, $valid_user_array ) ) {
return "<p>你没有权限使用该页面,请联系管理员。</p>";
}
这样,维护人员就可以自由的修改指定页面的访问权限用户列表。
自定义字段的开启和设置
开启自定义字段的设置,见下图:
设置自定义字段的操作,见下图:
总结
- 多了解一些框架内建功能和函数
- 尽量保持配置和功能实现的分离
本文介绍了如何在WordPress中设置页面访问权限,避免使用WordPress自带用户组,提出两种方法:一是通过判断当前登录用户名是否在代码中设定的权限列表中;二是利用自定义字段设置权限,便于维护人员在页面编辑界面自由修改权限用户列表。
24

被折叠的 条评论
为什么被折叠?



