WordPress自定义文章类型和自定义分类法

其实这么多年来,一直动摇要不要继续用WordPress,它即灵活又臃肿。对于新博客程序自己陆续已经写过两个版本(一个ThinkPHP5版本,一个Node.js+Vue.js版本)。两个版本都写到了90%后就忙工作了,好吧,索性继续用它。

体验盒子昨天花了一天时间写了个新栏目影视,真是整整一天。新栏目会以人工精编的方式继续分享影视资源,内容主要有值得你收藏观看的电影,电视剧;同时有网络安全电影,网络安全视频,黑客电影,黑客纪录片等特色类别。

新栏目的计划功能是这样的

  • 简约,仅展示有用的电影信息(资料介绍/下载/观看)
  • 能自动采集豆瓣IMDb的影片资料(它们专业)
  • 能自动采集影片的下载资源
  • 能自动解析适配目前各大视频站点影片播放节点
  • 能自动适配并转换传统播放节点为HTML5播放(体验+节能)
  • 带有独立的影片筛选功能

要使用WordPress完成以上功能就必须进行文章类型自定义(register post type),同时开发爬虫功能,解析规则库,但今天我们只讲自定义文章类型。

WordPress注册自定义类型register post type

创建或修改文章类型,register_post_type只能通过'init'动作调用,您可以在主题和插件中使用此功能。

保留的文章类型

以下帖子类型已由WordPress保留和使用,意味着你不能使用以下命名注册新的自定义类型

  • post
  • page
  • attachment
  • revision
  • nav_menu_item
  • custom_css
  • customize_changeset
  • oembed_cache
  • user_request

此外,不应使用以下帖子类型,因为它们会干扰其他WordPress功能。

  • action
  • author
  • order
  • theme

通常,您应该始终为帖子类型添加前缀,或者指定自定义query_var,以避免与现有的WordPress查询变量冲突。

更多信息查看: Post Types.

使用

参数

  • $post_type(字符串)(必填)帖子类型。(最多20个字符,不能包含大写字母,下划线或空格)默认值:无
  • $args(array)(可选)参数数组。默认值:无

更多参数直接看文档。

注册自定义类型示例

通过以上,你注册了一个以book命名的自定义类型。之后,你可能还需要重写永久连接Rewrite,这样做是让你的新类型和整体固定连接更一致,如:

完成以上,你已经完成了WordPress自定义类型的注册,但这还不够,你可能需要为自定义类型添加自定义分类(Taxonomies)筛选?

WordPress注册自定义分类法register taxonomy

添加或覆盖分类法register taxonomy,使用init操作来调用此函数。

应谨慎选择分类名称,以使其不与其他分类法,类型和保留的WordPress公共和私有查询变量冲突。

使用

参数

参数较多,看官方文档

演示

为名为“book”的文章类型注册两个分类法,类型和作者的示例。您可以在themes的functions.php模板文件中定义自定义分类法:

私人分类法示例

如果您不希望公开公开您的分类法,可以使用“public(公共)”和“rewrite(重写)”参数来抑制它。它可以在您的插件或主题内部使用,但不会生成它自己的URL。

保留的分类法

要注意不要引起冲突和404错误

  • attachment
  • attachment_id
  • author
  • author_name
  • calendar
  • cat
  • category
  • category__and
  • category__in
  • category__not_in
  • category_name
  • comments_per_page
  • comments_popup
  • customize_messenger_channel
  • customized
  • cpage
  • day
  • debug
  • error
  • exact
  • feed
  • fields
  • hour
  • link_category
  • m
  • minute
  • monthnum
  • more
  • name
  • nav_menu
  • nonce
  • nopaging
  • offset
  • order
  • orderby
  • p
  • page
  • page_id
  • paged
  • pagename
  • pb
  • perm
  • post
  • post__in
  • post__not_in
  • post_format
  • post_mime_type
  • post_status
  • post_tag
  • post_type
  • posts
  • posts_per_archive_page
  • posts_per_page
  • preview
  • robots
  • s
  • search
  • second
  • sentence
  • showposts
  • static
  • subpost
  • subpost_id
  • tag
  • tag__and
  • tag__in
  • tag__not_in
  • tag_id
  • tag_slug__and
  • tag_slug__in
  • taxonomy
  • tb
  • term
  • theme
  • type
  • w
  • withcomments
  • withoutcomments
  • year

通过以上,WordPress自定义类型和自定义分类法就完成了。

划重点

WordPress自定义文章类型和WordPress自定义分类法整体来说操作很直观,但你需要注意以下几点:

  • 自定义类型是注册全新的一个类型
  • 注册自定义分类法是可能在原有的类型中注册,也可在新的类型中注册
  • 自定义类型和自定义分类法中关于固定链接的处理两者都有rewrite参数,rewrite参数可接收上下响应或上下一致相同的父类命名,这样就可以将自定义文章类型与自定义分类法的URL统一起来

在实际开发中,我遇到了很多不知名的困惑,在搜索引擎中查阅后发现大量的复制转发,造成了我时间的浪费,焦点的浪费,甚至有时候把我引向了错误的方向。最终我选择仔细看官方文档,问题才得以解决。

相关阅读