首页 > 开发 > PHP > 正文

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

2024-05-04 22:30:41
字体:
来源:转载
供稿:网友

什么是自定义post?
不要想当然的认为这里的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'        => _x( 'Movies', 'post type 名称' ),  'singular_name'   => _x( 'Movie', 'post type 单个 item 时的名称,因为英文有复数' ),  'add_new'      => _x( '新建电影', '添加新内容的链接名称' ),  'add_new_item'    => __( '新建一个电影' ),  'edit_item'     => __( '编辑电影' ),  'new_item'      => __( '新电影' ),  'all_items'     => __( '所有电影' ),  'view_item'     => __( '查看电影' ),  'search_items'    => __( '搜索电影' ),  'not_found'     => __( '没有找到有关电影' ),  'not_found_in_trash' => __( '回收站里面没有相关电影' ),  'parent_item_colon' => '',  'menu_name'     => 'Movies' ); $args = array(  'labels'    => $labels,  'description'  => '我们网站的电影信息',  'public'    => true,  'menu_position' => 5,  'supports'   => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ),  'has_archive'  => true ); register_post_type( 'movie', $args );}add_action( 'init', 'my_custom_post_movie' );            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表