
您现在的位置是:首页 > WordPress教程WordPress教程
WordPress如何管理用户权限
WP集市
2025-09-01
【WordPress教程】
602人已围观
-
在WordPress里管用户权限,其实就像给不同人发门禁卡。你总不能让扫地阿姨去动服务器吧?所以它内置了一套角色系统,核心是用
add_cap()
和assign_role()
这类函数在数据库的wp_usermeta表里存权限标记。我常直接翻代码库里的wp-includes/capabilities.php
文件,里面明确定义了默认角色的权限映射。 -
比如默认角色有管理员、编辑、作者这些。你想让投稿者能上传图片但不改主题的话,可以这样插段代码:
function add_contributor_caps() { $role = get_role( 'contributor' ); $role->add_cap( 'upload_files' ); $role->remove_cap( 'edit_theme_options' ); } add_action( 'init', 'add_contributor_caps' );
这段代码挂到init钩子上,每次初始化权限时都会跑一遍。注意啊,直接改数据库权限表会出鬼故事,最好用WordPress提供的API操作。
-
实际权限检查是用
current_user_can()
函数,比如在模板里限制某些内容:if ( current_user_can( 'delete_others_posts' ) ) { echo '<button>删别人文章</button>'; } else { echo '你没这权限别瞎点'; }
这函数底层会去查当前用户的权限元数据,结合角色和独立分配的权限计算。有时候插件冲突会导致权限判断抽风,这时候记得清空对象缓存。
-
高级用法是自定义角色。比如给客户弄个“网站经理”角色:
add_role( 'site_manager', '网站经理', array( 'read' => true, 'edit_pages' => true, 'manage_options' => false ) );
第三个参数是权限能力数组,对应着那堆capability。不过记住啊,自定义角色得在插件激活钩子里注册,不然下次访问可能消失。
-
最后提个坑:多站点网络模式下,权限会跨站点飘移。超级管理员有所有权限,但普通用户可能在不同站点有不同角色。这时候用
switch_to_blog()
切换站点后,一定要重新获取用户对象,否则权限判断会错乱。权限系统本质是套在用户身上的过滤器链,理解了这个就懂怎么玩转WordPress权限了。
Tags:
文章版权声明:除非注明,否则均为WP集市原创文章,转载或复制请以超链接形式并注明出处。
