加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 沙龙聚会 > 聚会 > 正文

WordPress中设置Post Type自定义文章类型的实例教程

发布时间:2016-11-26 17:16:56 所属栏目:聚会 来源:站长网
导读:什么是自定义post#63; 不要想当然的认为这里的post就是就是指博客中的文章,它只不过是一个文章类的代理词而已,甚至你还可以认为它是内容。 自定义模型是没有一个很标准的什么规定的,文章模型可以是你想的任何一个内容模型,就拿wordpress本身来说就内置

什么是自定义post#63;
不要想当然的认为这里的post就是就是指博客中的文章,它只不过是一个文章类的代理词而已,甚至你还可以认为它是内容。
自定义模型是没有一个很标准的什么规定的,文章模型可以是你想的任何一个内容模型,就拿wordpress本身来说就内置了以下几个内容文章模型:

  • 博客文章
  • 页面
  • 附件
  • 修正
  • 导航等

你可以这样去理解:它只要是想我们使用博客文章那样用来创建、编辑和储存数据的一种很灵活的内容形式。

不过在这里我还是需要提醒下,博客内置的post还是有点点不同的,你可以利用它含有分类、标签等去标识内容的!
为什么要自定义文章模型?
Wordpress已经提供一些完善的默认文章模型,并适用于大多数站点,但我们还是需要更多的选择。我列举了一些我想到的一些可能有用内容模型,并链接到相对应的例子。

  • 房产清单
  • 活动日历(我知道很多人对这个感兴趣)
  • 影视资料库
  • 书籍资料库
  • 没有很多集成问题的论坛系统
  • 类似WordPress Trac的票务系统
  • 设计相册或作品集

你还可以想到我列举之外的更多内容模型。而且我也想在以后学习更多关于论坛和票务系统的想法。这两个系统我已经实现并希望的得到一些反馈。

创建一个 post type
创建一个新的 Post Type 需要使用 register_post_type 函数来注册一下。需要在你主题的 functions.php 文件下调用该函数:

register_post_type( $post_type, $args );

$post_type 参数就是你自定义 Post Type 的名称,Post Type 可以自定义的功能非常多,所以这个函数里面的 $args 参数会很多。所以通常会用下面这种格式来注册:

function my_custom_post_product() {
  $args = array();
  register_post_type( 'product', $args ); 
}
add_action( 'init', 'my_custom_post_product' );

包裹在一个函数中,定义一个数组,然后挂靠到 init 这个 action 上。这样 WordPress 在初始化的时候,就会执行这个函数注册一个自定义 Post Type,因为调用 register_post_type() 的时候,必须要在 admin_menu action 之前,在 after_setup_theme action 之后,所以这里最好挂靠到 init action 上。
参数很多,为了写教程方便,只列出比较常用的参数,大体结构如下:

function my_custom_post_movie() {
 $labels = array(
  'name'        =gt; _x( 'Movies', 'post type 名称' ),
  'singular_name'   =gt; _x( 'Movie', 'post type 单个 item 时的名称,因为英文有复数' ),
  'add_new'      =gt; _x( '新建电影', '添加新内容的链接名称' ),
  'add_new_item'    =gt; __( '新建一个电影' ),
  'edit_item'     =gt; __( '编辑电影' ),
  'new_item'      =gt; __( '新电影' ),
  'all_items'     =gt; __( '所有电影' ),
  'view_item'     =gt; __( '查看电影' ),
  'search_items'    =gt; __( '搜索电影' ),
  'not_found'     =gt; __( '没有找到有关电影' ),
  'not_found_in_trash' =gt; __( '回收站里面没有相关电影' ),
  'parent_item_colon' =gt; '',
  'menu_name'     =gt; 'Movies'
 );
 $args = array(
  'labels'    =gt; $labels,
  'description'  =gt; '我们网站的电影信息',
  'public'    =gt; true,
  'menu_position' =gt; 5,
  'supports'   =gt; array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ),
  'has_archive'  =gt; true
 );
 register_post_type( 'movie', $args );
}
add_action( 'init', 'my_custom_post_movie' );

这里为了直观方便,我直接使用了中文,更好的应该是使用英文然后通过本地化函数来翻译成中文。
参数有点多,也可以使用 generatewp 工具自定义参数,然后改改,会稍微方便一点。
从上面代码可以看到 $args 数组里面有一个 labels 配置项,用来配置显示文案有关的内容,为了清晰所以单独拿出来创建了一个数组。其他配置项看下英文也能猜出大体意思,如果想要详细了解,可以看下官方文档:register_post_type 。
将上面代码加到主题 functions.php 的最下面,进入后台你会发现多出了 Movies 选项,这样表示注册成功:

2016510155202407.jpg (978×716)

这时候我们可以新建 Movie 发表一篇电影类型的文章了。但是这样与文章类型基本相同,我们需要更多的自定义来完善我们的 Movie 类型。
为 Post Type 添加分类功能
就电影来说,可以分为科幻、动作、战争等类别,那么我们就为自定义的 Movie 添加分类功能,这样就可以编辑新分类以及归类我们的电影了。这个分类跟文章里面的分类性质是一样的。
添加分类功能需要使用函数 register_taxonomy,使用方法也很简单,跟注册 Post Type 函数类似,只不过多了一个参数用来指定对应的 Post Type :

register_taxonomy( $taxonomy, $object_type, $args );

就本例而言,可以配置如下常用参数:

function my_taxonomies_movie() {
 $labels = array(
  'name'       =gt; _x( '电影分类', 'taxonomy 名称' ),
  'singular_name'   =gt; _x( '电影分类', 'taxonomy 单数名称' ),
  'search_items'   =gt; __( '搜索电影分类' ),
  'all_items'     =gt; __( '所有电影分类' ),
  'parent_item'    =gt; __( '该电影分类的上级分类' ),
  'parent_item_colon' =gt; __( '该电影分类的上级分类:' ),
  'edit_item'     =gt; __( '编辑电影分类' ),
  'update_item'    =gt; __( '更新电影分类' ),
  'add_new_item'   =gt; __( '添加新的电影分类' ),
  'new_item_name'   =gt; __( '新电影分类' ),
  'menu_name'     =gt; __( '电影分类' ),
 );
 $args = array(
  'labels' =gt; $labels,
  'hierarchical' =gt; true,
 );
 register_taxonomy( 'movie_category', 'movie', $args );
}
add_action( 'init', 'my_taxonomies_movie', 0 );

添加到主题之后,我们看到出现了熟悉的文章分类功能,只不过上面的文案全部变成我们自定义的内容了:

2016510155316892.jpg (2558×1406)

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读