首页
wjlink
投稿
视频
直播
壁纸
更多
留言
统计
LINK
Search
1
宝塔面板绑定域名套上cloudflare – 实现cdn访问拯救你的IP
110 阅读
2
Python 爬取YouTube某个频道下的所有视频信息
109 阅读
3
为你的 WordPress 站点配置 Telegram Instant View
63 阅读
4
苹果CMS(MACCMS)如何在标题中随机插入关键词
60 阅读
5
windows 使用 FFmpeg 按大小或时间来批量分割视频
59 阅读
技術類
自媒体
調查
问卷调查
美國站
英國站
注册丨登录
Search
标签搜索
wordpress
V2Ray
vps
苹果cms
面板
php
宝塔
ipfs
DD
脚本
语言
上传
判断
Youtube
cdn
ip
AI
HTML
1
2
Gengre
累计撰写
67
篇文章
累计收到
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日
4 阅读
0 评论
0 点赞