WordPress自定义文章类型是强大的功能。它们将WordPress从一个不起眼的博客工具提升为一个内容管理系统,并为您提供创建定制网站所需的最重要的灵活性。
但它们可能会引起混淆:WordPress自定义文章类型到底是什么?它们与标准文章和页面有何不同?你如何创造它们?一旦你创建了一个自定义的文章类型,你如何添加它,在你的网站上显示它,以及它是如何被WordPress存储的?
在本文中,我将向您展示WordPress自定义文章类型的工作原理。我会将它们与您可能更熟悉的文章类型进行比较,教您如何创建它们,并向您展示如何使用主题模板文件在您的站点中显示它们。
- 什么是WordPress自定义文章类型?
- 文章和自定义文章类型之间的区别
- 如何使用插件添加自定义文章类型
- 如何在WordPress中注册您自己的自定义文章类型
- 如何在您的网站中显示WordPress自定义文章类型
什么是WordPress中的自定义文章类型?
通过解释一个更广泛的概念:文章类型,可能更容易解释WordPress中的自定义文章类型。
文章类型是在WordPress中对不同类型的内容进行分类的方法。我假设您已经熟悉两种最常见的文章类型:文章和页面。但您可能不知道的是,WordPress还捆绑了其他一些文章类型。
与WordPress捆绑的文章类型
WordPress有七种文章类型:
- 文章
- 页面
- 附件
- 修订
- 导航菜单
- 自定义CSS
- 变更集Changesets
您可能从未听说过变更集Changesets,并且您可能会在您的网站中使用自定义CSS,但您没有想到这些可能是文章类型。
对于大多数WordPress用户和开发人员来说,您唯一需要关注的文章类型是前五种:文章、页面、附件、修订和导航菜单。
让我们看一下这些文章类型中的每一个,以便我们了解更多关于它们的信息。
WordPress文章类型:文章
“文章”是您在WordPress中使用最多的文章类型。文章是动态内容:旨在定期更新。您可以向它们添加类别和标签,这意味着它们将显示在多个存档页面中,并且它们也将显示在您的主页或博客页面上。通常,您的文章将构成您网站上的大部分内容。
注意:在 WordPress 中,“发布”意味着两件事。在数据库中,文章是任何文章类型的文章,因此它将包括页面、附件和其他所有内容。当我们大多数人谈论文章时,我们指的是我们博客中的文章,属于“文章”文章类型。
WordPress文章类型:页面
如果您已经有一个WordPress网站,页面是您熟悉的另一种内容类型。它们是静态内容,旨在比文章停留更长时间,并提供有关不经常更改的事物的信息。很好的例子是您的联系方式或商业网站上的“关于我们”页面。
页面不能有类别或标签,也不能显示在存档页面上。相反,访问者将通过您的导航菜单访问它们。
注意:在互联网术语中,页面可以表示您网站上的任何类型的页面。互联网最初发展时,它仅包含必须通过编写HTML直接编码的静态内容。因此,“网页”可以是您网站上的任何类型的页面,包括WordPress术语中的静态页面、存档页面或文章。在本文中,当我提到页面时,我指的是WordPress术语中的页面,即静态页面。有时我会提到存档页面,但它们不是您创建一个页面来存储它们的意义上的页面。WordPress为您做到这一点。
WordPress文章类型:附件
附件是已上传到您网站的媒体项目。在WordPress数据库中,这不是媒体文件本身,而是与之相关的数据。因此,每个附件都将具有唯一的ID和元数据,例如其标题、描述、ALT文本等。
每个附件也有自己的附件页面,带有唯一的URL。您可以通过该附件的媒体编辑屏幕找到此URL:
WordPress中的附件编辑屏幕
附件可以是任何类型的上传:图像、视频、pdf文件等等。您可以通过WordPress管理菜单中的媒体项访问和编辑它们,也可以在编辑它们时将它们直接上传到文章/页面。您上传到文章的任何附件都可以通过“媒体 ”菜单进行编辑和查看。
WordPress文章类型:修订
现在我们开始讨论稍微晦涩的文章类型。
每次您保存新版本的文章、页面、附件或任何自定义文章类型时,WordPress都会创建一个修订版以反映该文章(或页面等)的版本。
您可以通过转到相关编辑屏幕并打开右侧的“文档” 选项卡来查看对站点中任何文章或页面的修订。在这里,您会看到一条通知,告诉您这篇文章有多少次修订。您可以在下面看到我正在编辑的文章的屏幕截图,该文章目前有五个修订版。
WordPress文章编辑屏幕中的修订
如果您不使用古腾堡编辑器,您可以通过滚动到编辑屏幕底部并在此处找到它们的列表来访问修订:
经典WordPress文章编辑屏幕中的修订
如果您单击“修订 ”框,您将被带到一个屏幕,显示您最新的两个版本的文章。从这里您可以查看修订并恢复到文章的早期版本。
随着时间的推移,WordPress会为您的网站创建大量修订,这意味着数据库将充满它们(这是关于如何处理修订版本以获得更快性能的指南)!但是修订版本是一种文章类型,就像其他任何类型一样,它们以相同的方式存储——很快就会有更多。
导航菜单,或者更准确地说,导航菜单中的项目,也是一种文章类型。
导航菜单中的每个项目都作为一个项目存储在数据库中。由于其元数据,WordPress知道这是一个导航菜单项,它应该出现在导航菜单中的确切位置以及链接到的位置。
您不能像编辑其他文章类型一样编辑导航菜单项。相反,您可以通过定制器或菜单屏幕来编辑它们。
WordPress文章类型:自定义CSS
如果您通过定制器添加自定义CSS,您的工作将使用此自定义文章类型保存。将为与您网站中的每个主题相关的自定义CSS保存一个新文章(“自定义CSS”文章类型),并且WordPress只会将一个用于当前活动的主题。
WordPress文章类型:变更集
变更集有点像修订,但它们不是应用于文章,而是应用于定制器。当您使用定制器进行更改时,它将以类似于草稿的方式保存为更改集。
现在我们已经了解了所有WordPress文章类型,让我们继续了解有关WordPress自定义文章类型的更多信息。
文章和自定义文章类型之间的区别
让我们快速回顾一下:文章可以是两件事之一。
文章类型是给定内容项所属的文章类型(在更广泛的意义上)。“文章”是一种文章类型,就像“页面”、“附件”或您注册的任何自定义文章类型一样(我知道,这很令人困惑,但我会在一分钟内深入挖掘)。
另一方面,您的自定义文章类型不是博客文章意义上的“文章”类型。它是存储在数据库中的所有文章(所有文章类型)意义上的一种文章。
WordPress自定义文章类型:常见用途
所以现在我们知道什么是自定义文章类型了。但是什么时候你可能需要使用一个?答案是每当您想向您的网站添加不适合其中一种内置文章类型的内容时。
自定义文章类型的一些常见示例是:
- 电子商务网站的产品。
- 作品集网站的作品或项目。
- 地图位置站点的地图。
- 预订网站的活动。
这些是一些最常见的用例,但绝不是唯一的用例。在决定是否对任何新内容使用自定义文章类型时,我的建议是问自己这个问题:
我想在主博客页面或静态页面中显示我的新内容,还是希望能够在单独的存档页面上显示它?
在某些情况下,使用一个类别来分离您的新内容可能就足够了:也许您正在运行一个博客并希望包含可以在他们自己的页面上显示的案例研究(使用您创建的“案例研究”类别)并显示在主博客中。但是,如果您想将新内容与博客文章分开,那么为它创建自定义文章类型是有意义的。
WordPress如何存储文章类型
自定义文章类型的文章的存储方式与标准文章(和页面等)的存储方式相同。让我们更详细地看一下这个。
您的WordPress站点有许多用于存储内容和设置的数据库表。表的最小数量是 12,但是如果您的站点运行多语言站点或者如果您安装了添加更多表的插件,您的站点可能会有更多。
WordPress数据库表
在上面的屏幕截图中,您可以看到有两个表看起来好像与文章有关:wp_posts和wp_postmeta。
wp_posts表存储所有文章类型的所有文章内容。因此,无论我们谈论的是博客文章、页面、修订、附件还是自定义文章类型都没有关系:它们都将存储在这个wp_posts表中。
WordPress知道每个文章的文章类型,因为它会在wp_posts表的post_type字段中有一个值。该值将对应于文章类型的名称。因此,当您添加新的博客文章时,WordPress会在wp_posts表中添加一个post_type为“post”的文章。例如,如果您注册了一个名为“product”的自定义文章类型,那么您创建的每个新产品都会在wp_posts表中生成一行,其中“product”作为post_type字段中的值。
wp_postmeta表用于存储有关您的文章的元数据。它有四个字段:
- meta_id:wp_postmeta表中该项的id。
- post_id:该项元数据对应的文章。一篇文章在wp_postmeta表中可以有多行。
- meta_key:此特定类型元数据的密钥。例如,对于静态页面,一个潜在的键可能是page_template,它会记录正在使用的页面模板。
- meta_value:字段的值。如果页面(再次使用此示例)正在使用默认页面模板,则此处的meta_value将为“default”。
因此,为给定文章存储的元数据种类将根据它的文章类型而有所不同。
您无需担心哪些数据存储在wp_posts中,哪些存储在wp_postmeta中:但了解所有文章类型都存储在同一个位置很有用,因为这意味着WordPress可以以几乎相同的方式处理它们大大地。
自定义文章类型存储在WordPress中的什么位置?
您的WordPress站点有许多用于存储内容和设置的数据库表。例如,如果您注册了一个名为“case study”的自定义文章类型,那么您创建的每个新案例研究都会在wp_posts表中生成一行,其中“product”作为post_type字段中的值。
WordPress知道每个文章的文章类型,因为它会在wp_posts表的post_type字段中有一个值。
自定义文章类型如何与自定义分类法和自定义字段交互
在我们继续研究如何在WordPress中注册自定义文章类型之前,让我们确定自定义文章类型将如何与其他自定义内容类型交互,即自定义分类法和自定义字段。
自定义分类法
WordPress中的分类法用于对任何文章类型的文章进行分类。对于标准文章,使用的两种分类法是类别和标签。
注册自定义文章类型时,您可以选择为其分配任何现有的分类法或分类法。您可以在注册分类时为其添加“category”分类。当我演示创建自定义文章类型的技术时,我将很快向您展示如何执行此操作。
或者,您可以为您的自定义文章类型创建全新的分类法,这也是一种常用方法。
因此,例如,如果您正在为电子商务网站创建 “product”文章类型,您可能会创建“department” 分类来将产品分类到商店中的部门。
如果您正在创建 “event” 文章类型,则可以创建 “event type”分类,它可以指定这是一场音乐会、诗歌朗诵还是喜剧之夜。
您创建的分类法取决于您,并且取决于您希望从自定义文章类型对文章进行排序和显示的方式。
自定义字段
您在WordPress中拥有的另一种自定义内容类型是自定义字段,也称为文章元数据。自定义字段是您可以添加到任何文章的附加元数据,只要文章类型支持它们。当您注册自定义文章类型时,您可以在此行中包含自定义字段支持:
supports => array( ‘custom-fields’ );
这是作为数组传递的,以便您可以添加对多个选项的支持。
因此,如果您想将元数据添加到您的自定义文章类型,例如服装店中具有“product”文章类型的尺寸或颜色,您将使用自定义字段来执行此操作。
自定义字段不同于自定义分类法,因为您不会使用它们来输出存档页面。
这是一家服装店的示例。您将为“department”分类的每个示例创建一个存档页面,例如“Women’s”、“Men’s”等。假设您还有一个名为“Size”的自定义字段。您不会为每种尺寸创建存档页面,因为这不是您的客户希望看到的。
遵循此规则可帮助您确定是否需要使用自定义分类法或自定义字段来向您的文章添加更多数据:您是否需要在存档页面中显示它?
稍后我将向您展示如何为您的自定义文章类型和自定义分类法输出存档页面。
如何使用插件添加自定义文章类型
因此,您知道自定义文章类型是什么,并且您知道您的网站需要一个:如何添加它?
有两种方法:使用插件和手动编码。让我们从插件路由开始。
您可以使用两种类型的插件来注册自定义文章类型:第一种将注册自定义文章类型以添加插件附带的功能,第二种将为您提供可用于创建您的自己的文章类型。
第一个示例包括各种插件,包括电子商务插件、事件插件等。让我们从最受欢迎的WordPress插件之一WooCommerce开始。
如何使用WooCommerce注册自定义文章类型
WooCommerce是一个注册自定义文章类型以便工作的插件示例。在这种情况下,它是“product”文章类型。
WooCommerce中列出的产品
WooCommerce还为您注册了一些自定义分类和自定义字段来组织您的商店,包括产品类别和产品标签。这些与您用于博客文章的类别和标签不同。
如何使用Events Calendar插件注册自定义文章类型
事件日历插件是另一个使用自定义文章类型的插件。在这种情况下,它是“event”文章类型。
Events Calendar插件创建的event
该插件添加了事件独有的分类法:“event category”。它也将普通标签应用于事件,因此您可以使用与博客文章相同的标签。
如何使用WP Google Maps注册自定义文章类型
就像WooCommerce和The Events Calendar一样,WP Google Maps是一个WordPress地图插件,可为您的地图注册自定义文章类型。
由WP Google Maps插件创建的地图
“map”文章类型与之前插件中的产品或活动文章类型的工作方式不同,因为您不会显示所有地图的存档页面:相反,该插件为您创建的每个地图提供了一个短代码,您嵌入进入您网站的文章或页面。但是,尽管您无法像查看其他一些文章类型一样查看地图,但它仍然是一种文章类型。
如何使用Custom Post Type UI插件
如果您想注册自己的自定义文章类型,而不是作为WooCommerce等插件提供的更广泛功能的一部分,您可以使用为您提供界面的插件,该界面旨在使注册自定义文章类型变得容易。
一个这样的插件是Custom Post Type UI插件。
Custom Post Type UI插件
该插件允许您使用管理屏幕注册自己的自定义文章类型,而无需编写任何代码。
它为您提供了一组屏幕,可让您添加注册文章类型的所有元素,您将在使用register_post_type()
函数时添加这些元素。要使用插件添加新的文章类型,请转到CPT IU > Add/Edit Post Types。
使用Custom Post Type UI插件添加文章类型
从这里,您可以添加新的文章类型或编辑您已注册的任何现有文章类型。
您可以编辑文章类型的设置,也可以将它们保留为默认设置。您可以在WordPress Codex中找到有关文章类型的所有设置和选项的完整文档。
Custom Post Type UI插件的设置
您还可以使用该插件注册自定义分类并将其分配给您的新文章类型或任何现有文章类型。当您使用该插件注册文章类型时,您可以为它分配任何现有的分类法。
如何使用Pods插件注册自定义文章类型
Pods插件是另一个插件,它为您提供了一个界面,旨在让您无需编写代码即可注册自定义文章类型。
Pods还允许您扩展现有的文章类型。因此,您可以向现有文章类型或分类添加额外字段,并编辑其设置。
使用Pods插件创建文章类型
Pods插件使用文章类型(“pod”)来存储您的所有自定义设置,并且还允许您注册自己的文章类型,有点像Custom Post Type UI插件,但其界面旨在引导您完成整个过程. 这意味着该插件可以使该过程更容易,但与您自己编写文章类型相比,它向您的站点(以及向您的数据库中的数据)添加了更多的代码。
或者,如果您不想安装插件来管理注册文章类型的过程,您可以自己编写代码。
如何在WordPress中注册您自己的自定义文章类型
如果您喜欢编写代码,您可以利用register_post_type()
函数来注册您的自定义文章类型。这是最有效的方法。
最佳实践告诉我们将自定义文章类型的代码放在插件中,而不是在您的主题中。这是因为如果您将来要更改主题,您将不希望丢失文章类型以及您使用该文章类型创建的所有文章。这也意味着如果您将来更新主题,您将不会丢失您的文章类型。
让我们完成在WordPress中注册您自己的自定义文章类型的步骤。
创建你的插件
第一步是创建你的插件。在您的开发或临时站点(还不是您的实时站点)的wp-content/plugins文件夹中,为您的插件添加一个文件夹。在该文件夹中,添加一个PHP文件。比如wbolt-register-posttype.php。
提示:我总是喜欢在文件夹中创建插件,而不是仅仅将插件文件添加到wp-content/plugins文件夹中。这样,如果我需要向我的插件添加更多文件,例如包含文件、脚本或样式,我已经准备好一个文件夹来保存它们。
现在在您的新php文件中,为您的插件添加开头注释掉的文本:
/*
Plugin Name: Register Custom Post Types
Plugin URI: https://www.wbolt.com
Description: Plugin to register the book post type
Version: 1.0
Author: WBOLT
Author URI:https://www.wbolt.com
Textdomain: wbolt
License: GPLv2
*/
<?php /* Plugin Name: Register Custom Post Types Plugin URI: https://www.wbolt.com Description: Plugin to register the book post type Version: 1.0 Author: WBOLT Author URI:https://www.wbolt.com Textdomain: wbolt License: GPLv2 */
这会告诉WordPress(和用户)有关插件的一些关键信息:
- 它叫什么
- 在哪里可以找到更多信息
- 它能做什么
- 版本号
- 谁开发了它,你可以在哪里找到更多关于它们的信息
- 国际化的文本域
- 许可证,应始终为GPL。
所以你的插件现在已经设置好了,如果你愿意,你可以在管理屏幕中激活它。如果你这样做,它不会做任何事情。
为您的文章类型设置函数
现在让我们开始创建函数来注册您的文章类型。在我的示例中,我将创建一个名为“book”的文章类型,因为这是一个虚构的书评网站。您使用的内容显然会有所不同,并且取决于您使用自定义文章类型的目的。
在注释掉的文本下方,添加以下内容:
}
add_action( ‘init’, ‘wbolt_register_post_type’ );
function wbolt_register_post_type() { } add_action( 'init', 'wbolt_register_post_type' );
此函数将包含您的自定义文章类型的所有代码。您可能想要更改其名称以添加您自己的前缀而不是wbolt_。最好在所有函数上使用前缀,这样您就不会与主题或正在运行的其他插件提供的任何函数的名称发生冲突。
其余代码将添加到该函数的大括号内。
为您的自定义文章类型定义标签
现在是时候为您的自定义文章类型定义标签了,在这些花括号内,添加以下内容: