您的位置:首页 > 其它

wordpress中页面的用户权限设置

2016-04-30 10:01 274 查看
欢迎转载!转载时请注明出处:http://blog.csdn.net/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>";
}


这样,维护人员就可以自由的修改指定页面的访问权限用户列表。

自定义字段的开启和设置

开启自定义字段的设置,见下图:



设置自定义字段的操作,见下图:



总结

多了解一些框架内建功能和函数

尽量保持配置和功能实现的分离
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息