wordpress自定义文章类型capability_type和capabilities参数说明

在wordpress中关于用户权限有三个词:Role、Capabilities、User Levels分别是角色、权限、用户级别的意思,在前面后台制作教程中创建后台菜单的时候提到过有个参数是填写一个Capabilities,但是很多人填写的是role喝user levels。

在wordpress中role-角色很容易理解,就是管理员、订阅者之类的。对于用户层级,wordpress将用户分成了从0到10共11级别,0为最低,10最高,管理员Administrator就是10级别的,具有最高权限,wordpress默认只有5中角色,我们可以人为的添加一些角色,并给它某一级别的权限。

Capabilities是具体的权限,比如:switch_themes-管理主题、edit_themes编辑主题、edit_posts发表文章。。等等。

在创建自定义文章类型的函数register_post_type中,capability_type参数和上一篇教程的public参数类似,也是一个“父级参数”它的作用只是给Capabilities数组中没有人为具体赋值的参数赋值

capability_type的默认值是post,所以默认的对于该文章类型的各种权限跟post是一样的,也就是edit_post之类的,但是如果你想单独添加不同的Capabilities,比如你使用register_post_type添加了文章类型book,我希望有的用户能编辑默认的文章,但是不能编辑book,那就需要给book单独添加不同的权限-Capabilities。那就应该具体的配置一下capabilities参数(这个参数是数组)。它的默认值是

  • edit_post: 是否能创建和编辑一个具体的文章
  • edit_posts: Capability that allows editing posts of this post type.是否允许编辑该文章类型的文章
  • edit_others_posts:是否允许编辑别人发布的文章
  • publish_posts: Capability to grant publishing of these types of posts.是否允许发布文章
  • read_post: Capability that controls reading of a specific post of this post type.
  • read_private_posts: Capability to allow reading of private posts.是否能阅读私有文章
  • delete_post: Capability that grants the privelege of deleting posts.是否能删除文章。

要具体配置权限,先将capability_type设置成book,那么wordpress将自动给这个文章类型添加权限种类,比如edit_post就会对应添加一个edit_book,而Capabilities如果不具体设定的话,它的值会是:

  1. capabilities' => array(   
  2.     'edit_post' => 'edit_book',   
  3.     'edit_posts' => 'edit_books',   
  4.     'edit_others_posts' => 'edit_others_books',   
  5.     'publish_posts' => 'publish_books',   
  6.     'read_post' => 'read_book',   
  7.     'read_private_posts' => 'read_private_books',   
  8.     'delete_post' => 'delete_book',   
  9. )  

你也可以具体的来设置Capabilities参数,比如

  1. 'capabilities' => array(   
  2.     'read' => 'read_books',   
  3.     'edit_posts' => 'edit_published_books',   
  4.     'delete_posts' => 'delete_published_books',   
  5. ),  

注意的是,这里只是改变了capabilities的名称为edit_published_books,至于该权限对应的具体操作还是edit_books。

而你新添加了capabilities,而默认的角色中都没有这个权限(超级管理员也不行),所以得使用add_cap函数给具体的角色赋予你自定义的capabilities.

已有7条评论

  1. 80后男人
    80后男人 : 回复

    请教,如何让自定义文章类型的文章在归档页面中和普通文章一样显示?

    • 阿树工作室
      阿树工作室 回复80后男人: 回复

      自定义文章类型在首页中是能够显示的。只要在添加文章类型的时候注意参数即可。

      在普通文章的分类中是不会出现其它文章类型的内容的。

      你可以给自定义文章类型添加其它的分类方法。参考:wordpress进阶教程(三):创建自定义分类法

      • 80后男人
        80后男人 回复阿树工作室: 回复

        之前在普通页面我知道怎么弄,但是在归档页面却只显示普通类型的,自定义的不显示,后来在官网看了下post-type函数,已经解决了,谢谢博主的回复

  2. brick
    brick : 回复

    “得使用add_cap函数给具体的角色赋予你自定义的capabilities.”


    求详细

  3. 唐山自闭症
    唐山自闭症 : 回复

    还在学习

  4. monad
    monad : 回复

    又有问题请教你啦、找你方法添加的自定义类型发布的文章连接显示为中文的了!http://localhost/wp1/books/随心所欲的显示文章列表:wp…y-by-wordpress 成这种格式的了、我设置的固定连接的    [分类名称]/ID.HTML

    • 阿树工作室
      阿树工作室 回复monad: 回复

      这是很正常的。。。。wordpress后台设置固定连接,只对默认的文章有效,要想解决这个问题,一、自己写url重写规则,不过这个很麻烦。。二

      装个插件,你可以试试custom-post-type-permalinks这个插件。

发表评论