您想了解如何在 WordPress 中轻松创建自定义帖子类型吗?
自定义帖子类型允许您超越帖子和页面,并为您的网站创建不同的内容类型。他们将您的 WordPress 网站从博客平台转变为强大的内容管理系统 ( CMS )。
在本文中,我们将向您展示如何在 WordPress 中轻松创建自定义帖子类型。

WordPress 中的自定义帖子类型是什么?
在您的WordPress 网站上,帖子类型用于帮助区分 WordPress 中的不同内容类型。帖子和页面都是帖子类型,但目的不同。
默认情况下,WordPress 附带了几种不同的帖子类型:
- 邮政
- 页
- 依恋
- 修订
- 导航菜单
您还可以创建自己的帖子类型,称为自定义帖子类型。当创建格式与标准帖子或页面不同的内容时,这些非常有用。
例如,如果您运营一个电影评论网站,那么您可能想要创建一个电影评论帖子类型。您还可以为作品集、推荐和产品创建自定义帖子类型。
在 WPBeginner 上,我们为“交易”和“术语表”部分使用自定义帖子类型,以将它们与我们的每日博客文章分开。它可以帮助我们更好地组织我们的网站内容。
自定义帖子类型可以有不同的自定义字段和自己的自定义类别结构。
许多流行的 WordPress 插件使用自定义帖子类型在 WordPress 网站上存储数据。以下是一些使用自定义帖子类型的顶级插件:
- WooCommerce向您的在线商店添加“产品”帖子类型
- WPForms创建一个“wpforms”帖子类型来存储您的所有表单
- MemberPress添加了“memberpressproduct”自定义帖子类型
视频教程
https://www.youtube.com/embed/yFSZKgJkV2A?version=3&rel=0&fs=1&showsearch=0&showinfo=1&iv_load_policy=1&wmode=transparent订阅 WPBeginner
https://www.youtube.com/subscribe_embed?usegapi=1&channel=wpbeginner&layout=default&count=default&origin=https%3A%2F%2Fwpbeginner.com&gsrc=3p&ic=1&jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en.vQiXRrxCe40.O%2Fam%3DAQ%2Fd%3D1%2Frs%3DAGLTcCMBxIGVyXSdvvcs43a64yHt_P7dfg%2Fm%3D__features__#_methods=onPlusOne%2C_ready%2C_close%2C_open%2C_resizeMe%2C_renderstart%2Concircled%2Cdrefresh%2Cerefresh&id=I0_1448178294715&parent=https%3A%2F%2Fwpbeginner.com
如果您更喜欢书面说明,请继续阅读。
我需要创建自定义帖子类型吗?
在开始在 WordPress 网站上创建自定义帖子类型之前,评估您的需求非常重要。很多时候,您可以使用普通的帖子或页面获得相同的结果。
如果您不确定您的网站是否需要自定义帖子类型,请参阅我们的指南,了解何时需要 WordPress 中的自定义帖子类型或分类法。
话虽这么说,让我们看看如何在 WordPress 中轻松创建自定义帖子类型供您自己使用。
我们将向您展示两种方法,并介绍一些可以在 WordPress 网站上显示自定义帖子类型的方法。
使用 WPCode 手动创建自定义帖子类型
创建自定义帖子类型需要您将代码添加到主题的functions.php文件中。通常,除了高级用户之外,我们不建议任何人这样做,因为即使是轻微的错误也可能会破坏您的网站。另外,如果您更新主题,那么代码将被删除。
但是,我们将使用 WPCode,这是任何人向 WordPress 网站添加自定义代码的最简单、最安全的方法。
使用 WPCode,您可以添加自定义代码片段,并激活其内置预配置代码库中的许多功能,这些功能可以替换您可能已安装的许多专用或一次性插件。
首先,您需要安装并激活免费的 WPCode 插件。有关详细说明,请查看我们有关如何安装 WordPress 插件的分步指南。
激活后,导航至WordPress 仪表板中的代码片段 » 添加片段。将鼠标悬停在“添加自定义代码(新代码段)”上,然后单击“使用代码段”。

接下来,您将进入“创建自定义片段”屏幕。
现在,您可以为代码片段指定标题并将开关切换到“活动”。

之后,只需将以下代码粘贴到“代码预览”区域即可。此代码创建一个名为“电影”的基本自定义帖子类型,该类型将显示在您的管理侧边栏中,并且适用于任何主题。
1234567891011121314151617 号181920 | // Our custom post type function function create_posttype() { register_post_type( 'movies' , // CPT Options array ( 'labels' => array ( 'name' => __( 'Movies' ), 'singular_name' => __( 'Movie' ) ), 'public' => true, 'has_archive' => true, 'rewrite' => array ( 'slug' => 'movies' ), 'show_in_rest' => true, ) ); } // Hooking up our function to theme setup add_action( 'init' , 'create_posttype' ); |
由
如果您只想要基本的自定义帖子类型,只需将movies
和替换Movies
为您自己的 CPT 别名和名称,然后单击“更新”按钮。
但是,如果您想要为自定义帖子类型提供更多选项,请使用以下代码而不是上面的代码。
下面的代码向“电影”自定义帖子类型添加了更多选项,例如对修订、特色图像、自定义字段的支持,以及将自定义帖子类型与称为“流派”的自定义分类法相关联。
注意:请勿组合这两个片段,否则 WordPress 会出现错误,因为这两个片段注册相同的自定义帖子类型。我们建议使用 WPCode 为您想要注册的每个附加帖子类型创建一个全新的代码段。
1234567891011121314151617 号1819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | /* * Creating a function to create our CPT */ function custom_post_type() { // Set UI labels for Custom Post Type $labels = array ( 'name' => _x( 'Movies' , 'Post Type General Name' , 'twentytwentyone' ), 'singular_name' => _x( 'Movie' , 'Post Type Singular Name' , 'twentytwentyone' ), 'menu_name' => __( 'Movies' , 'twentytwentyone' ), 'parent_item_colon' => __( 'Parent Movie' , 'twentytwentyone' ), 'all_items' => __( 'All Movies' , 'twentytwentyone' ), 'view_item' => __( 'View Movie' , 'twentytwentyone' ), 'add_new_item' => __( 'Add New Movie' , 'twentytwentyone' ), 'add_new' => __( 'Add New' , 'twentytwentyone' ), 'edit_item' => __( 'Edit Movie' , 'twentytwentyone' ), 'update_item' => __( 'Update Movie' , 'twentytwentyone' ), 'search_items' => __( 'Search Movie' , 'twentytwentyone' ), 'not_found' => __( 'Not Found' , 'twentytwentyone' ), 'not_found_in_trash' => __( 'Not found in Trash' , 'twentytwentyone' ), ); // Set other options for Custom Post Type $args = array ( 'label' => __( 'movies' , 'twentytwentyone' ), 'description' => __( 'Movie news and reviews' , 'twentytwentyone' ), 'labels' => $labels , // Features this CPT supports in Post Editor 'supports' => array ( 'title' , 'editor' , 'excerpt' , 'author' , 'thumbnail' , 'comments' , 'revisions' , 'custom-fields' , ), // You can associate this CPT with a taxonomy or custom taxonomy. 'taxonomies' => array ( 'genres' ), /* A hierarchical CPT is like Pages and can have * Parent and child items. A non-hierarchical CPT * is like Posts. */ 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_in_nav_menus' => true, 'show_in_admin_bar' => true, 'menu_position' => 5, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'post' , 'show_in_rest' => true, ); // Registering your Custom Post Type register_post_type( 'movies' , $args ); } /* Hook into the 'init' action so that the function * Containing our post type registration is not * unnecessarily executed. */ add_action( 'init' , 'custom_post_type' , 0 ); |
由
您可能还注意到我们将层次结构值设置为 的部分false
。如果您希望自定义帖子类型的行为类似于页面而不是帖子,那么您可以将此值设置为true
。
另一件需要注意的事情是字符串的重复使用twentytwentyone
,这称为文本域。如果您的主题已准备好翻译并且您希望翻译自定义帖子类型,那么您将需要提及您的主题使用的文本域。
您可以在主题目录中的文件内找到主题的文本域style.css
,或者转到管理面板中的外观» 主题文件编辑器。文本域将在文件的标题中提及。
只需替换twentytwentyone
为您自己主题的文本域即可。
一旦您对更改感到满意,只需单击“更新”按钮,WPCode 将处理其余的事情。
使用插件创建自定义帖子类型
在 WordPress 中创建自定义帖子类型的另一种简单方法是使用插件。建议初学者使用此方法,因为它安全且超级简单。
您需要做的第一件事是安装并激活自定义帖子类型 UI插件。有关更多详细信息,请参阅我们有关如何安装 WordPress 插件的分步指南。
激活后,您需要转到CPT UI » 添加/编辑帖子类型来创建新的自定义帖子类型。您应该位于“添加新帖子类型”选项卡上。

首先,您需要为自定义帖子类型(例如“电影”)提供一个别名。该 slug 将在 URL 和 WordPress 查询中使用,因此它只能包含字母和数字。下面,您需要为自定义帖子类型提供复数和单数名称。
之后,如果您愿意,可以单击“根据所选标签填充其他标签”的链接。这将自动填写下面的附加标签字段,通常会节省您的时间。
现在您可以向下滚动到“其他标签”部分。如果您没有单击我们提到的链接,您现在需要提供帖子类型的描述并更改标签。
当您管理特定帖子类型的内容时,这些标签将在整个 WordPress 用户界面中使用。
接下来是帖子类型设置。从这里您可以为您的帖子类型设置不同的属性。每个选项都附有简短说明,解释其用途。
例如,您可以选择不使帖子类型像页面一样分层,或者按时间顺序对帖子进行反向排序。
在常规设置下方,您将看到用于选择该帖子类型支持哪些编辑功能的选项。只需选中您想要包含的选项即可。
最后,单击“添加帖子类型”按钮保存并创建您的自定义帖子类型。
就这样。您已成功创建自定义帖子类型,可以继续开始添加内容。
在您的网站上显示自定义帖子类型
WordPress 内置支持显示自定义帖子类型。将一些项目添加到新的自定义帖子类型后,就可以将它们显示在您的网站上。
您可以使用多种方法,每种方法都有其自身的优点。
使用默认存档模板显示自定义帖子类型
首先,您只需转到外观»菜单并将自定义链接添加到菜单即可。此自定义链接是指向您的自定义帖子类型的链接。

如果您使用SEO 友好的永久链接,那么您的自定义帖子类型的 URL 很可能是这样的:
http://example.com/movies |
如果您不使用 SEO 友好的永久链接,那么您的自定义帖子类型 URL 将如下所示:
http://example.com/?post_type=movies |
不要忘记将“example.com”替换为您自己的域名,将“电影”替换为您的自定义帖子类型名称。
保存您的菜单,然后访问您网站的前端。您将看到添加的新菜单项,当您单击它时,它将使用主题中的archive.php模板文件显示自定义帖子类型的存档页面。

创建自定义帖子类型模板
如果您不喜欢自定义帖子类型的存档页面的外观,则可以使用自定义帖子类型存档的专用模板。
您所需要做的就是在主题目录中创建一个新文件并为其命名archive-movies.php
。确保将“电影”替换为自定义帖子类型的名称。
首先,您可以将主题archive.php
文件的内容复制到archive-movies.php
模板中,然后对其进行修改以满足您的需求。
现在,每当访问自定义帖子类型的存档页面时,都会使用此模板来显示它。
同样,您还可以为您的帖子类型的单个条目显示创建自定义模板。为此,您需要single-movies.php
在主题目录中创建。不要忘记将“电影”替换为您的自定义帖子类型的名称。
您可以首先将主题single.php
模板的内容复制到模板中single-movies.php
,然后开始修改它以满足您的需求。
要了解更多信息,请参阅有关如何在 WordPress 中创建自定义单篇文章模板的指南。
在首页上显示自定义帖子类型
使用自定义帖子类型的优点之一是它可以将自定义内容类型与常规帖子分开。但是,如果您愿意,您可以在网站的首页上显示自定义帖子类型。
只需使用免费的 WPCode 插件将此代码添加为新片段即可。请参阅本文有关手动添加代码的部分以获取详细说明。
1234567 | add_action( 'pre_get_posts' , 'add_my_post_types_to_query' ); function add_my_post_types_to_query( $query ) { if ( is_home() && $query ->is_main_query() ) $query ->set( 'post_type' , array ( 'post' , 'movies' ) ); return $query ; } |
由
不要忘记将“电影”替换为您的自定义帖子类型。
查询自定义帖子类型
如果您熟悉编码并希望在模板中运行循环查询,那么这里是如何做到这一点的。通过查询数据库,您可以从自定义帖子类型中检索项目。
您需要将以下代码片段复制到您希望显示自定义帖子类型的模板中。
123456789101112131415 | <?php $args = array ( 'post_type' => 'movies' , 'posts_per_page' => 10 ); $the_query = new WP_Query( $args ); ?> <?php if ( $the_query ->have_posts() ) : ?> <?php while ( $the_query ->have_posts() ) : $the_query ->the_post(); ?> <h2><?php the_title(); ?></h2> <div class = "entry-content" > <?php the_content(); ?> </div> <?php endwhile ; wp_reset_postdata(); ?> <?php else : ?> <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p> <?php endif ; ?> |
由
此代码在我们新的 WP_Query 类的参数中定义了帖子类型和每页帖子数量。然后它运行查询、检索帖子并在循环内显示它们。
在小部件中显示自定义帖子类型
您会注意到 WordPress 中有一个默认小部件来显示最近的帖子,但它不允许您选择自定义帖子类型。
如果您想在小部件中显示新创建的帖子类型的最新条目该怎么办?有一个简单的方法可以做到这一点。
您需要做的第一件事是安装并激活自定义帖子类型小部件插件。有关更多详细信息,请参阅我们有关如何安装 WordPress 插件的分步指南。
激活后,只需转到外观»小部件并将“最近帖子(自定义帖子类型)”小部件拖放到侧边栏即可。

该小部件允许您显示任何帖子类型的最新帖子。您需要从“帖子类型”下拉列表中选择自定义帖子类型,然后选择所需的选项。
之后,请确保单击屏幕顶部的“更新”按钮,然后访问您的网站以查看正在运行的小部件。

该插件还提供自定义帖子类型小部件,用于显示档案、日历、类别、最近评论、搜索和标签云。

我们希望本教程能帮助您学习如何在 WordPress 中创建自定义帖子类型。您可能还想了解如何增加博客流量,或查看我们的常见 WordPress 错误列表以及如何修复它们。