发布价值信息
Wordpress、Software、VPN。。

WordPress查询文章作者的文章数及WordPress用户角色/权限

这篇文章发布时间为2016年11月22日,因年久失修,一些图片或者资源可能已经失效。 如果出现这些问题,请在下面留言,我们会尽快修复。

做一个记录:

本文详细介绍了如何查询 WordPress 某一篇文章作者的文章以及其权限,附带介绍了 WordPress 的用户权限系统,指出了网上到处复制的某些文章存在的问题。

一、查询Wordpress某篇文章作者的全部文章或部分最新文章

1.获取当前文章作者的 ID

get_post($id)->post_author

这才是获取 WordPress 当前文章作者 ID 的正确方式,网上到处乱传的那篇名叫 《WordPress 通过文章ID获取文章标题、内容等信息》 的文章里的说法是错误的,虽然是错误的,但是却被广泛的 Ctrl+C 然后 Ctrl+V,以讹传讹,不可思议啊。

另外 get_post($id)-> 可以获取与文章有关的许多信息,转述如下:

post_author:(整数)文章作者的编号  
post_data:(字符)文章发表的日期和时间(YYYY-MM-DD HH-MM-SS) 
post_data_gmt:(字符)文章发表的格林尼治标准时间(GMT) (YYYY-MM-DD HH-MM-SS)
post_content:(字符)文章内容
post_title:(字符)文章标题
post_category:(整数)文章类别的编号。注意:该值在 WordPress 2.1 之后的版本总为 0。定义文章的类别时可使用 get_the_category() 函数。
post_excerpt:(字符)文章摘要
post_status:(字符)文章状态(publish|pending|draft|private|static|object|attachment|inherit|future) 
comment_status:(字符)评论状态(open|closed|registered_only)
ping_status:(字符)pingback/trackback状态(open|closed)
post_password:(字符)文章密码
post_name:(字符)文章的URL嵌套
to_ping:(字符)要引用的URL链接 
pinged:(字符)引用过的链接
post_modified:(字符)文章最后修改时间(YYYY-MM-DD HH-MM-SS)  
post_modified_gmt:(字符)文章最后修改GMT时间(YYYY-MM-DD HH-MM-SS) 
post_parent:(整数)父级文章编号(供附件等)  
guid:(字符)文章的一个链接。注意:不能将 GUID 作为永久链接(虽然在2.5之前的版本中它的确被当作永久链接),也不能将它作为文章的可用链接。GUID 是一种独有的标识符,只是目前恰巧成为文章的一个链接。    
post_type:(字符)(日志 | 页面 | 附件)
post_mime_type:(字符)Mime类型(供附件等) 
comment_count:(整数)评论总数

2.Wordpress 查询文章作者的全部文章/部分文章的主要函数及输出

<?php   
global $wpdb;   
//$current_user->ID的话,查询的就是当前登录的用户,所以是不对的;   
$author_id = get_post($id)->post_author;   
$sql =  "SELECT * FROM $wpdb->posts WHERE post_status IN ('publish','static') AND post_author = '$author_id' AND post_type ='post'LIMIT 5" ; //查询作者文章数量   
$posts= $wpdb->get_results($sql);   
    foreach ($posts as $post) {   
  
echo'<li><a href="';the_permalink();echo '" rel="twipsy" title="';the_title();echo '">'. mb_strimwidth(get_the_title(), 0, 20,"...").'</a></li>';   
}   
?>  

只在无序列表 ul 里输出一个列表,格式是截断的标题加上链接,查询了仅仅5篇,多了的话,没什么用,这里仅仅是测试。

二、Wordpress 用户角色与权限

WordPress 用户角色或者 WordPress 用户权限说是从 WordPress 2.0 开始,逐渐的完善起来的,默认分以下几种的:

  • Super Admin 超级管理员-针对 WordPress 多站点环境,一般人很少接触,所以很少有人提及;
  • Administrator 管理员 -拥有特定的某一个站点的所有管理权限;
  • Editor 编辑 -发表文章、编辑文章、并能编辑其他人的文章等等;
  • Author 作者-能够发布和编辑自己的文章;
  • Contributor 贡献者或者叫投稿者 -能够撰写和编辑自己的文章、但不能发布;
  • Subscriber 订阅者 -能够查看评论/添加评论/查看文章,等等。

当新用户在你的 WordPress 站点上注册了的时候(假设已经开启注册),他的默认角色可以在 WordPress 后台–>设置–>常规页面设置。

1.查询 WordPress 文章作者的角色

在本文的开头,我们已经知道如何获取 WordPress 某一篇文章的作者 ID 了,现在就来获取其角色:

$user_id = get_post($id)->post_author; 
if ( user_can ( $user_id,'install_plugins' ) ) {
         echo '管理员';
} elseif ( user_can ( $user_id,'edit_others_posts' ) ) {
         echo '管理编辑';
    } elseif ( user_can ( $user_id,'publish_posts' ) ) {
         echo'作者';
    } elseif ( user_can ( $user_id,'delete_posts' ) ) {
         echo'贡献者';
    } elseif ( user_can ( $user_id,'read' ) ) {
         echo'订阅者';
} 

管理员和编辑都能 publish_posts,但是这里的判断有先后顺序,所以不用担心这个问题,这个判断是不错的!
WordPress 某篇文章的作者是否有某权限的推荐函数:

if ( author_can ( $post, $capability ) ) {      
    // 如果文章 $post 的作者拥有 $capability 时执行的动作      
}

\
这个相对简单一些,可以直接去判断,所以我再某个项目中最终使用了这个函数。参数中的 $post 可以是文章自身,也可以是文章 ID,使用起来很方便!

if ( author_can ( $post->ID,'install_plugins' ) ) {
         echo'<span class="label label-warning role">管理员</span>';
    } elseif ( author_can ( $post->ID,'edit_others_posts' ) ) {
         echo'管理编辑';
    } elseif ( author_can ( $post->ID,'publish_posts' ) ) {
         echo'作者';
    } elseif ( author_can ( $post->ID,'delete_posts' ) ) {
         echo'投稿者';
    } elseif ( author_can ( $post->ID,'read' ) ) {
         echo'订阅者';
}  

2.Wordpress 当前登录者的权限/权限等级

这个函数是经常被使用的,使用的是权限等级,Wordpress 官方已经声明:从 WordPress 3.0,已经废弃了对这个权限等级制度的支持,所以,网上到处乱飞的复制文章,谨慎对待吧!

if ( current_user_can ( 'level_10' ) ) { 
		echo '管理员';
	} elseif ( current_user_can ( 'level_7' ) ) { 
		echo '管理编辑';
	} elseif ( current_user_can ( 'level_4' ) ) { 
		echo '作者';
	} elseif ( current_user_can ( 'level_4' ) ) { 
		echo '贡献者';
	} elseif ( current_user_can ( 'level_0' ) ) { 
		echo '订阅者';
}  
赞(1) 打赏本站

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

×
打赏作者
未经允许不得转载:何先生 » WordPress查询文章作者的文章数及WordPress用户角色/权限
分享到: 更多 (0)

Comments 7

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. 沙发

    该评论为私密评论

    QQ游客
    0
    2年前 (2016-11-22)回复 unknow| unknow| IP数据库错误或不存在
  2. 板凳

    嗯,不错。

    憧憬Licoy
    1
    2年前 (2016-11-28)回复 unknow| unknow| IP数据库错误或不存在
  3. 地板

    用好这个作者相关函数,还是可以折腾很多好东西出来的

    懿古今
    3
    2年前 (2016-11-29)回复 unknow| unknow| IP数据库错误或不存在
    • @懿古今 是的,比如我文章侧边栏显示作者信息,如果是网站编辑或者投稿者管理员,那个站长二字就会显示成对应的

      Biebb
      管理员
      2年前 (2016-11-29)回复 unknow| unknow| IP数据库错误或不存在
  4. 4楼

    你这个侧栏很漂亮

    小萝博客
    1
    2年前 (2016-11-29)回复 unknow| unknow| IP数据库错误或不存在
  5. 5楼

    侧边栏跟DUX主题还蛮配的签到成功!签到时间:上午11:00:38,每日签到,生活更精彩哦~

    雅兮网
    2
    2年前 (2016-12-01)回复 unknow| unknow| IP数据库错误或不存在

何先生的博客 专注分享 更优质

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏