什么是WordPress自定义文章类型?如何创建?(自定义,创建,类型,文章,WordPress.....)

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

什么是wordpress自定义文章类型?如何创建?

自定义文章类型(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
文件中,或者如果你想让它独立于主题,可以创建一个小插件。完成代码添加后,别忘了去WordPress后台的“设置”-youjiankuohaophpcn“固定链接”页面,点击“保存更改”按钮,即使不修改任何设置,这样做也会刷新固定链接规则,确保你的新文章类型能够正常访问。

使用插件方式:

如果你觉得写代码有点复杂,或者只是想快速测试一下,那么使用插件是一个非常友好的选择。比如“Custom Post Type UI (CPT UI)”这个插件,它提供了一个直观的图形界面,让你能够轻松地创建和管理自定义文章类型及自定义分类法,而无需编写任何代码。安装并激活插件后,你会在WordPress后台看到一个新的菜单项,跟着向导操作就行了。

WordPress自定义文章类型能解决哪些内容管理难题?

说实话,WordPress这东西,骨子里其实就是个内容管理系统,但它厉害就厉害在,可以让你把内容玩出花来。如果你的网站内容不仅仅是简单的博客文章和静态页面,比如你正在构建一个电影数据库、一个产品展示网站,或者一个员工名录,那么只用“文章”和“页面”来管理,很快你就会发现一团糟。这就是自定义文章类型大显身手的地方。

它能解决的核心问题就是内容结构化和分离。试想一下,如果你把所有的电影信息都塞到普通的“文章”里,那么电影的导演、主演、上映日期这些信息,你可能就得用自定义字段(Custom Fields)或者直接写在文章内容里。这样一来,后台看起来就乱七八糟,前端展示也得费老大劲去解析。

燕雀光年
燕雀光年

一站式AI品牌设计平台,支持AI Logo设计、品牌VI设计、高端样机设计、AI营销设计等众多种功能

燕雀光年68
查看详情 燕雀光年

有了自定义文章类型,比如我们创建的“电影”类型,你就可以为它定义一套完全独立的管理界面和数据结构。后台菜单会多出一个“电影”选项,点进去你看到的都是电影相关的内容。每部电影都可以有自己的标题、内容(简介)、特色图片(海报),还可以配合自定义字段插件(如ACF, Advanced Custom Fields)来添加“导演”、“主演”、“评分”等专属字段。这样一来,内容的录入、管理和检索都变得井井有条,前端展示时也能更方便地调用这些结构化的数据,大大提升了开发效率和用户体验。

此外,自定义文章类型还允许你有独立的归档页面(比如

/movies/
会显示所有电影列表),独立的单页模板(
single-movie.php
),让你的网站在功能和外观上都能高度定制化,不再受限于“文章”和“页面”的固有框架。

register_post_type()
函数的核心参数有哪些?如何配置?

register_post_type()
函数是WordPress用来注册自定义文章类型的核心,它接受两个参数:文章类型的slug(一个唯一的字符串标识符,比如我们上面用的
'movie'
)和一个包含各种配置选项的数组
$args
。这个
$args
数组才是真正决定你的自定义文章类型行为和外观的关键。理解并正确配置这些参数,是创建强大自定义文章类型的基础。

这里我挑几个我觉得特别重要、或者新手容易忽略的参数来详细聊聊:

  • labels
    : 这个参数是一个数组,里面包含了文章类型在WordPress管理界面中显示的各种文本字符串,比如“添加新电影”、“所有电影”等等。虽然WordPress会为一些基本标签提供默认值,但我强烈建议你提供完整的自定义标签,这能让你的后台界面更专业、更易用。比如,如果你不设置
    add_new_item
    ,那么后台可能只会显示“添加新文章”,这显然不符合“电影”类型。
  • public
    : 这是一个布尔值,决定了你的文章类型是否对公众可见,包括是否在前端显示、是否可查询、是否在搜索结果中显示等。如果你想创建一个只在后台使用的内容类型(比如后台配置项),可以设置为
    false
    。但对于绝大多数需要展示给用户的自定义内容,它应该设为
    true
  • supports
    : 同样是一个数组,它定义了你的自定义文章类型在编辑界面应该支持哪些WordPress内置的功能。常见的包括
    'title'
    (标题),
    'editor'
    (内容编辑器),
    'thumbnail'
    (特色图片),
    'excerpt'
    (摘要),
    'comments'
    (评论),
    'custom-fields'
    (自定义字段)。如果你不需要某些功能,比如一个只有标题的列表,就可以移除对应的支持项,让编辑界面更简洁。
  • has_archive
    : 也是一个布尔值,或者可以是一个字符串。如果设置为
    true
    ,WordPress会自动为你的自定义文章类型生成一个归档页面,比如
    /movies/
    。如果你想自定义归档页面的URL slug,可以传入一个字符串,比如
    'my-movies-archive'
    ,那么归档页就是
    /my-movies-archive/
    。这对于内容集合的展示至关重要。
  • menu_icon
    : 这个参数可以让你为自定义文章类型在WordPress后台的菜单项设置一个图标。你可以使用WordPress内置的Dashicons图标(比如
    'dashicons-format-video'
    ),也可以提供一个自定义图片的URL。一个好的图标能让后台界面更直观,一眼就能识别出不同的内容类型。
  • show_in_rest
    : 这是一个相对较新的参数,如果你的网站使用了Gutenberg编辑器,或者你需要通过REST API来访问和管理这个文章类型的内容,那么务必将它设置为
    true
    。这能确保你的自定义文章类型能与现代WordPress开发流程无缝集成。
  • taxonomies
    : 这个参数允许你将已有的分类法(比如默认的
    'category'
    'post_tag'
    )或者你自定义的分类法关联到你的自定义文章类型。通过这种方式,你可以为电影添加“类型”(如“科幻”、“喜剧”)和“标签”(如“悬疑片”、“动作片”),进一步丰富内容的组织结构。

理解这些参数的含义和作用,能在你构建网站时提供极大的灵活性。有时候,一个小小的参数配置错误,就可能导致整个功能不按预期工作,所以花时间仔细阅读官方文档,并多尝试不同的配置,是很有必要的。

自定义分类法(Custom Taxonomies)与自定义文章类型有何关联?

如果你把自定义文章类型比作一个“文件柜”,那么自定义分类法就是这个文件柜里的“文件夹”或者“标签”。它们是用来对自定义文章类型内容进行分类、分组和组织的一种方式。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 word 前端 go wordpress 工具 ai red php format 标识符 字符串 数据结构 堆 public 数据库 ui WordPress

大家都在看:

什么是WordPress自定义文章类型?如何创建? WordPress自定义CSS是什么?怎样添加样式? WordPress重定向是什么?怎样设置301跳转? 什么是WordPress Ping?如何控制文章通知? 什么是WordPress仪表盘?如何自定义仪表盘?

标签:  php word 前端 go wordpress 工具 ai red format 标识符 字符串 数据结构  public 数据库 ui WordPress 大家都在看: 什么是WordPress自定义文章类型?如何创建? WordPress自定义CSS是什么?怎样添加样式? 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。