首页
wjlink
投稿
视频
直播
壁纸
更多
留言
统计
LINK
Search
1
为你的 WordPress 站点配置 Telegram Instant View
53 阅读
2
重点提示:邮箱购买和调查帐号注册要求
46 阅读
3
Paypal外区账户/国际版绑大陆手机号注册教程
36 阅读
4
宝塔面板绑定域名套上cloudflare – 实现cdn访问拯救你的IP
35 阅读
5
Python 爬取YouTube某个频道下的所有视频信息
30 阅读
技術類
自媒体
調查
问卷调查
美國站
英國站
注册丨登录
Search
标签搜索
wordpress
V2Ray
vps
苹果cms
面板
php
宝塔
ipfs
DD
脚本
语言
上传
判断
Youtube
ip
AI
1
2
3
救砖
Gengre
累计撰写
65
篇文章
累计收到
0
条评论
今日撰写
0
篇文章
️
首页
分类
技術類
自媒体
調查
问卷调查
美國站
英國站
页面
wjlink
投稿
视频
直播
壁纸
留言
统计
LINK
登录丨注册
搜索到
1
篇与
的结果
2023-10-21
WordPress判断用户特定内容只对管理员可见
WordPress特定内容只对管理员可见之前判断登录用户的角色用的是current_user_can()方法,比如判断当前用户是否是作者用current_user_can('author'),但对于WordPress 5不再可行。current_user_can的用法变了,正确的用法是传递$capability。除此之外,还有哪些更高效的方法来判断WordPress用户角色呢? 今天体验盒子在baidu和Google谷歌镜像上搜了一圈“WordPress判断用户角色和权限及管理员,WordPress特定内容只对管理员可见”,发现很多结果都过于老旧,于是重新总结了一下,本文内容适用于最新的WordPress5。 一、用current_user_can判断当前用户是否具有特定权限与功能。1<?php current_user_can( $capability , $object_id ); ?> $capability(string) (必须) [角色或功能].默认: 无 $object_id(int) (可选的) .默认: 无 不要将角色名称传递给current_user_can(),因为这不能保证其正常工作。传递用户角色名称(如author、contributor)作为参数不能100%保证返回正确的结果,正确的用法是传递$capability,用权限值比角色名称更靠谱。 所以,要根据不同角色拥有的权限来判断用户角色,用户权限可以在Roles and Capabilities中找到。判断示例判断用户是否为管理员(Administrator) if( current_user_can( 'manage_options' ) ) { echo 'The current user is a administrator'; } 判断用户是否为编辑(Editor) if( current_user_can( 'publish_pages' ) && !current_user_can( 'manage_options' ) ) { echo 'The current user is an editor'; } 判断用户是否为作者(Author) if( current_user_can( 'publish_posts' ) && !current_user_can( 'publish_pages' ) ) { echo 'The current user is an author'; } 判断用户是否为投稿者(Contributor) if( current_user_can( 'edit_posts' ) && !current_user_can( 'publish_posts' ) ) { echo 'The current user is a contributor'; } 判断用户是否为订阅者(Subscriber) if( current_user_can( 'read' ) && !current_user_can( 'edit_posts' ) ) { echo 'The current user is a subscriber'; } 二、用$current_user判断$current_user是WordPress的一个全局变量,当用户登录后,这个里面就会有用户的角色和权限信息。当WordPress的init action执行后,就可以安全的使用$current_user全局变量了。在模板文件中判断登录用户是否为作者(Author) global $current_user; if( $current_user->roles[0] == 'author' ) { echo 'The current user is an author'; } 在functions.php中判断用户是否为作者(Author) add_action( 'init', 'check_user_role' ); function check_user_role() { global $current_user; if( $current_user->roles[0] == 'author' ) { echo 'The current user is an author'; } } 检查用户角色之前,还可以先检查一下用户是否登录 三、使用WordPress Levels判断用户角色和权限及管理员扩展一下。我们用第一个方法的current_user_can来更灵活的判断用户角色、权限、管理员,下图展示了WordPress各个用户组所对应的级别,那么我们需要来判断是否为管理员,也就是Administrator(level_10):WordPress用户级别的范围是0到10。用户级别0(零)是最低级别,用户级别10是最高级别-意味着用户级别10具有绝对权限(最高权限级别)。用户级别功能表WordPress User Level空白单元格意味着该功能甚至不适用于特定的用户级别。“-”表示用户级别具有功能,但仅部分功能。“ +”表示用户级别具有该功能,但只能影响其自己的对象(例如,帖子)或较低用户级别的对象。“ x”表示用户具有该菜单项可用的全部功能。User Level:012345678910Dashboard—–xxxxxxxxxxxWrite—–Write Post –xxxxxxxxx—–Write Page xxxxxxManage—–Posts –++++++++x—–Pages +++++x—–Categories –––xxxxxxx—–Comments xxxxxxxxxx—–Awaiting Moderation –––xxxxxxxLinks—–Manage Links +++++x—–Add Links xxxxxx—–Link Categories xxxxxx—–Import Links xxxxxxPresentation—–Themes xxx—–Theme Editor xxxPlugins—–Plugins xxx—–Plugin Editor xxxUsers—–Your Profilexxxxxxxxxxx—–Authors and Users –++++xOptions—–General xxxxx—–Writing xxxxx—–Reading xxxxx—–Discussion xxxxx—–Permalinks xxxxx—–Miscellaneous xxxxxUpload—–(only if enabled) xxxxxxxxxx012345678910用level_10判断是否为wordpress管理员代码如下 if(current_user_can('level_10')){ //加入符合管理员后需要添加的内容 } 这样想判断其他权限用户也就是换个级别就可以了。四、更简单高效的方法还有一种更直接的方法,例如判断当前用户是否为管理员 global $current_user; if(in_array( 'administrator', $current_user->roles )){ echo 'administrator'; } 也可以这样 administrator 不太严谨的高效写法,需要修改administrator为你的管理员用户名
2023年10月21日
3 阅读
0 评论
0 点赞