自定义文章类型(CPT)让WordPress可管理电影、产品等结构化内容,通过register_post_type()函数在functions.php或插件中注册,支持独立菜单、归档页与自定义字段,结合自定义分类法实现高效内容组织与展示。

自定义文章类型(Custom Post Types, CPTs)是WordPress里一个特别强大的功能,它允许你创建除了默认的“文章”和“页面”之外,拥有自己独特结构和属性的内容类型。简单来说,就是把你的网站从一个纯粹的博客或信息发布平台,变成一个可以管理各种复杂数据(比如产品、电影、食谱、员工档案)的专用系统。它让WordPress的后台管理界面更贴合你网站的实际内容需求,让内容组织和管理变得更加清晰和高效。
创建自定义文章类型,通常有两种方式,一种是借助插件,另一种则是手动编写代码。我个人更倾向于后者,因为这能让你对整个过程有更深的理解和更强的控制力,而且对于长期维护来说,代码即文档,也更清晰。
手动编码方式:
这通常是在你的主题的
functions.php
register_post_type()
下面是一个创建名为“电影”的自定义文章类型的示例代码:
function create_my_movie_cpt() {
$labels = array(
'name' => _x( '电影', 'Post Type General Name', 'your-textdomain' ),
'singular_name' => _x( '电影', 'Post Type Singular Name', 'your-textdomain' ),
'menu_name' => __( '电影', 'your-textdomain' ),
'name_admin_bar' => __( '电影', 'your-textdomain' ),
'archives' => __( '电影归档', 'your-textdomain' ),
'attributes' => __( '电影属性', 'your-textdomain' ),
'parent_item_colon' => __( '父级电影:', 'your-textdomain' ),
'all_items' => __( '所有电影', 'your-textdomain' ),
'add_new_item' => __( '添加新电影', 'your-textdomain' ),
'add_new' => __( '添加新', 'your-textdomain' ),
'new_item' => __( '新电影', 'your-textdomain' ),
'edit_item' => __( '编辑电影', 'your-textdomain' ),
'update_item' => __( '更新电影', 'your-textdomain' ),
'view_item' => __( '查看电影', 'your-textdomain' ),
'view_items' => __( '查看电影', 'your-textdomain' ),
'search_items' => __( '搜索电影', 'your-textdomain' ),
'not_found' => __( '未找到电影', 'your-textdomain' ),
'not_found_in_trash' => __( '回收站中未找到电影', 'your-textdomain' ),
'featured_image' => __( '特色图片', 'your-textdomain' ),
'set_featured_image' => __( '设置特色图片', 'your-textdomain' ),
'remove_featured_image' => __( '移除特色图片', 'your-textdomain' ),
'use_featured_image' => __( '使用特色图片', 'your-textdomain' ),
'insert_into_item' => __( '插入到电影', 'your-textdomain' ),
'uploaded_to_this_item' => __( '上传到此电影', 'your-textdomain' ),
'items_list' => __( '电影列表', 'your-textdomain' ),
'items_list_navigation' => __( '电影列表导航', 'your-textdomain' ),
'filter_items_list' => __( '过滤电影列表', 'your-textdomain' ),
);
$args = array(
'label' => __( '电影', 'your-textdomain' ),
'description' => __( '管理网站上的电影信息', 'your-textdomain' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments', 'custom-fields' ), // 启用标题、编辑器、特色图片、摘要、评论和自定义字段
'taxonomies' => array( 'category', 'post_tag' ), // 可以关联默认分类和标签,或自定义分类法
'hierarchical' => false, // 是否像页面一样有层级关系
'public' => true, // 是否公开显示在前端
'show_ui' => true, // 是否在WordPress管理界面显示UI
'show_in_menu' => true, // 是否在管理菜单中显示
'menu_position' => 5, // 在管理菜单中的位置,5是文章下方
'menu_icon' => 'dashicons-format-video', // 菜单图标,可以使用Dashicons或自定义URL
'show_in_admin_bar' => true, // 是否在管理工具栏中显示
'show_in_nav_menus' => true, // 是否可以在导航菜单中选择
'can_export' => true, // 是否可以导出此类型内容
'has_archive' => true, // 是否有文章归档页
'exclude_from_search' => false, // 是否排除在搜索结果之外
'publicly_queryable' => true, // 是否可以通过URL查询
'capability_type' => 'post', // 权限类型,可以设置为'post'或'page'
'show_in_rest' => true, // 启用Gutenberg编辑器和REST API
);
register_post_type( 'movie', $args ); // 'movie' 是你的自定义文章类型 slug,必须唯一
}
add_action( 'init', 'create_my_movie_cpt' );将这段代码添加到你的主题的
functions.php
使用插件方式:
如果你觉得写代码有点复杂,或者只是想快速测试一下,那么使用插件是一个非常友好的选择。比如“Custom Post Type UI (CPT UI)”这个插件,它提供了一个直观的图形界面,让你能够轻松地创建和管理自定义文章类型及自定义分类法,而无需编写任何代码。安装并激活插件后,你会在WordPress后台看到一个新的菜单项,跟着向导操作就行了。
说实话,WordPress这东西,骨子里其实就是个内容管理系统,但它厉害就厉害在,可以让你把内容玩出花来。如果你的网站内容不仅仅是简单的博客文章和静态页面,比如你正在构建一个电影数据库、一个产品展示网站,或者一个员工名录,那么只用“文章”和“页面”来管理,很快你就会发现一团糟。这就是自定义文章类型大显身手的地方。
它能解决的核心问题就是内容结构化和分离。试想一下,如果你把所有的电影信息都塞到普通的“文章”里,那么电影的导演、主演、上映日期这些信息,你可能就得用自定义字段(Custom Fields)或者直接写在文章内容里。这样一来,后台看起来就乱七八糟,前端展示也得费老大劲去解析。
有了自定义文章类型,比如我们创建的“电影”类型,你就可以为它定义一套完全独立的管理界面和数据结构。后台菜单会多出一个“电影”选项,点进去你看到的都是电影相关的内容。每部电影都可以有自己的标题、内容(简介)、特色图片(海报),还可以配合自定义字段插件(如ACF, Advanced Custom Fields)来添加“导演”、“主演”、“评分”等专属字段。这样一来,内容的录入、管理和检索都变得井井有条,前端展示时也能更方便地调用这些结构化的数据,大大提升了开发效率和用户体验。
此外,自定义文章类型还允许你有独立的归档页面(比如
/movies/
single-movie.php
register_post_type()
register_post_type()
'movie'
$args
$args
这里我挑几个我觉得特别重要、或者新手容易忽略的参数来详细聊聊:
labels
add_new_item
public
false
true
supports
'title'
'editor'
'thumbnail'
'excerpt'
'comments'
'custom-fields'
has_archive
true
/movies/
'my-movies-archive'
/my-movies-archive/
menu_icon
'dashicons-format-video'
show_in_rest
true
taxonomies
'category'
'post_tag'
理解这些参数的含义和作用,能在你构建网站时提供极大的灵活性。有时候,一个小小的参数配置错误,就可能导致整个功能不按预期工作,所以花时间仔细阅读官方文档,并多尝试不同的配置,是很有必要的。
如果你把自定义文章类型比作一个“文件柜”,那么自定义分类法就是这个文件柜里的“文件夹”或者“标签”。它们是用来对自定义文章类型内容进行分类、分组和组织的一种方式。WordPress默认提供了两种分类法:“分类”(Category)和“标签”(Tag),但它们往往不足以满足特定内容类型的需求。
举个例子,对于我们创建的“电影”自定义文章类型,你可能需要按“电影类型”(如科幻、喜剧、动作)、“上映年份”、“国家/地区”等维度来组织电影。这时候,自定义分类法就派上用场了。你可以创建名为“电影类型”的自定义分类法,并为它添加“科幻”、“喜剧”等分类项。这样,每部电影就可以被归类到一个或多个电影类型下,方便用户浏览和筛选。
自定义分类法和自定义文章类型是天生一对的搭档,它们共同构建了WordPress强大的内容结构能力。没有分类法,你的自定义文章类型内容可能就只是一堆平铺的数据;有了分类法,这些数据就能被赋予清晰的层次和关系。
创建自定义分类法同样可以使用
register_taxonomy()
function create_my_movie_taxonomies() {
// 注册电影类型分类法
$labels_genre = array(
'name' => _x( '电影类型', 'Taxonomy General Name', 'your-textdomain' ),
'singular_name' => _x( '电影类型', 'Taxonomy Singular Name', 'your-textdomain' ),
'menu_name' => __( '电影类型', 'your-textdomain' ),
'all_items' => __( '所有电影类型', 'your-textdomain' ),
'parent_item' => __( '父级电影类型', 'your-textdomain' ),
'parent_item_colon' => __( '父级电影类型:', 'your-textdomain' ),
'new_item_name' => __( '新电影类型名称', 'your-textdomain' ),
'add_new_item' => __( '添加新电影类型', 'your-textdomain' ),
'edit_item' => __( '编辑电影类型', 'your-textdomain' ),
'update_item' => __( '更新电影类型', 'your-textdomain' ),
'view_item' => __( '查看电影类型', 'your-textdomain' ),
'separate_items_with_commas' => __( '用逗号分隔电影类型', 'your-textdomain' ),
'add_or_remove_items' => __( '添加或移除电影类型', 'your-textdomain' ),
'choose_from_most_used' => __( '从常用电影类型中选择', 'your-textdomain' ),
'popular_items' => __( '热门电影类型', 'your-textdomain' ),
'search_items' => __( '搜索电影类型', 'your-textdomain' ),
'not_found' => __( '未找到', 'your-textdomain' ),
'no_terms' => __( '没有电影类型', 'your-textdomain' ),
'items_list' => __( '电影类型列表', 'your-textdomain' ),
'items_list_navigation' => __( '电影类型列表导航', 'your-textdomain' ),
);
$args_genre = array(
'labels' => $labels_genre,
'hierarchical' => true, // 设置为true表示像分类一样有层级关系,false表示像标签一样没有层级
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' 以上就是什么是WordPress自定义文章类型?如何创建?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号