自定义文章类型(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号