WordPress自定义文章类型:创建和使用它们的多合一指南

WordPress自定义文章类型:创建和使用它们的多合一指南

WordPress自定义文章类型是强大的功能。它们将WordPress从一个不起眼的博客工具提升为一个内容管理系统,并为您提供创建定制网站所需的最重要的灵活性。

但它们可能会引起混淆:WordPress自定义文章类型到底是什么?它们与标准文章和页面有何不同?你如何创造它们?一旦你创建了一个自定义的文章类型,你如何添加它,在你的网站上显示它,以及它是如何被WordPress存储的?

在本文中,我将向您展示WordPress自定义文章类型的工作原理。我会将它们与您可能更熟悉的文章类型进行比较,教您如何创建它们,并向您展示如何使用主题模板文件在您的站点中显示它们。

  1. 什么是WordPress自定义文章类型?
  2. 文章和自定义文章类型之间的区别
  3. 如何使用插件添加自定义文章类型
  4. 如何在WordPress中注册您自己的自定义文章类型
  5. 如何在您的网站中显示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中的附件编辑屏幕

WordPress中的附件编辑屏幕

附件可以是任何类型的上传:图像、视频、pdf文件等等。您可以通过WordPress管理菜单中的媒体项访问和编辑它们,也可以在编辑它们时将它们直接上传到文章/页面。您上传到文章的任何附件都可以通过“媒体 ”菜单进行编辑和查看。

WordPress文章类型:修订

现在我们开始讨论稍微晦涩的文章类型。

每次您保存新版本的文章、页面、附件或任何自定义文章类型时,WordPress都会创建一个修订版以反映该文章(或页面等)的版本。

您可以通过转到相关编辑屏幕并打开右侧的“文档” 选项卡来查看对站点中任何文章或页面的修订在这里,您会看到一条通知,告诉您这篇文章有多少次修订。您可以在下面看到我正在编辑的文章的屏幕截图,该文章目前有五个修订版。

WordPress文章编辑屏幕中的修订

WordPress文章编辑屏幕中的修订

如果您不使用古腾堡编辑器,您可以通过滚动到编辑屏幕底部并在此处找到它们的列表来访问修订:

经典WordPress文章编辑屏幕中的修订

经典WordPress文章编辑屏幕中的修订

如果您单击“修订 ”框,您将被带到一个屏幕,显示您最新的两个版本的文章。从这里您可以查看修订并恢复到文章的早期版本。

随着时间的推移,WordPress会为您的网站创建大量修订,这意味着数据库将充满它们(这是关于如何处理修订版本以获得更快性能的指南)!但是修订版本是一种文章类型,就像其他任何类型一样,它们以相同的方式存储——很快就会有更多。

WordPress文章类型:导航菜单

导航菜单,或者更准确地说,导航菜单中的项目,也是一种文章类型。

导航菜单中的每个项目都作为一个项目存储在数据库中。由于其元数据,WordPress知道这是一个导航菜单项,它应该出现在导航菜单中的确切位置以及链接到的位置。

您不能像编辑其他文章类型一样编辑导航菜单项。相反,您可以通过定制器或菜单屏幕来编辑它们。

WordPress文章类型:自定义CSS

如果您通过定制器添加自定义CSS,您的工作将使用此自定义文章类型保存。将为与您网站中的每个主题相关的自定义CSS保存一个新文章(“自定义CSS”文章类型),并且WordPress只会将一个用于当前活动的主题。

WordPress文章类型:变更集

变更集有点像修订,但它们不是应用于文章,而是应用于定制器。当您使用定制器进行更改时,它将以类似于草稿的方式保存为更改集。

现在我们已经了解了所有WordPress文章类型,让我们继续了解有关WordPress自定义文章类型的更多信息。

文章和自定义文章类型之间的区别

让我们快速回顾一下:文章可以是两件事之一。

文章类型是给定内容项所属的文章类型(在更广泛的意义上)。“文章”是一种文章类型,就像“页面”、“附件”或您注册的任何自定义文章类型一样(我知道,这很令人困惑,但我会在一分钟内深入挖掘)。

另一方面,您的自定义文章类型不是博客文章意义上的“文章”类型。它是存储在数据库中的所有文章(所有文章类型)意义上的一种文章。

WordPress自定义文章类型:常见用途

所以现在我们知道什么是自定义文章类型了。但是什么时候你可能需要使用一个?答案是每当您想向您的网站添加不适合其中一种内置文章类型的内容时。

自定义文章类型的一些常见示例是:

  • 电子商务网站的产品。
  • 作品集网站的作品或项目。
  • 地图位置站点的地图。
  • 预订网站的活动。

这些是一些最常见的用例,但绝不是唯一的用例。在决定是否对任何新内容使用自定义文章类型时,我的建议是问自己这个问题:

我想在主博客页面或静态页面中显示我的新内容,还是希望能够在单独的存档页面上显示它?

在某些情况下,使用一个类别来分离您的新内容可能就足够了:也许您正在运行一个博客并希望包含可以在他们自己的页面上显示的案例研究(使用您创建的“案例研究”类别)并显示在主博客中。但是,如果您想将新内容与博客文章分开,那么为它创建自定义文章类型是有意义的。

WordPress如何存储文章类型

自定义文章类型的文章的存储方式与标准文章(和页面等)的存储方式相同。让我们更详细地看一下这个。

您的WordPress站点有许多用于存储内容和设置的数据库表。表的最小数量是 12,但是如果您的站点运行多语言站点或者如果您安装了添加更多表的插件,您的站点可能会有更多。

WordPress数据库表

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中列出的产品

WooCommerce还为您注册了一些自定义分类和自定义字段来组织您的商店,包括产品类别和产品标签。这些与您用于博客文章的类别和标签不同。

如何使用Events Calendar插件注册自定义文章类型

事件日历插件是另一个使用自定义文章类型的插件。在这种情况下,它是“event”文章类型。

Events Calendar插件创建的event

Events Calendar插件创建的event

该插件添加了事件独有的分类法:“event category”。它也将普通标签应用于事件,因此您可以使用与博客文章相同的标签。

如何使用WP Google Maps注册自定义文章类型

就像WooCommerce和The Events Calendar一样,WP Google Maps是一个WordPress地图插件,可为您的地图注册自定义文章类型。

由WP Google Maps插件创建的地图

由WP Google Maps插件创建的地图

“map”文章类型与之前插件中的产品或活动文章类型的工作方式不同,因为您不会显示所有地图的存档页面:相反,该插件为您创建的每个地图提供了一个短代码,您嵌入进入您网站的文章或页面。但是,尽管您无法像查看其他一些文章类型一样查看地图,但它仍然是一种文章类型。

如何使用Custom Post Type UI插件

如果您想注册自己的自定义文章类型,而不是作为WooCommerce等插件提供的更广泛功能的一部分,您可以使用为您提供界面的插件,该界面旨在使注册自定义文章类型变得容易。

一个这样的插件是Custom Post Type UI插件。

Custom Post Type UI插件

Custom Post Type UI插件

该插件允许您使用管理屏幕注册自己的自定义文章类型,而无需编写任何代码。

它为您提供了一组屏幕,可让您添加注册文章类型的所有元素,您将在使用register_post_type()函数时添加这些元素。要使用插件添加新的文章类型,请转到CPT IU > Add/Edit Post Types

使用Custom Post Type UI插件添加文章类型

使用Custom Post Type UI插件添加文章类型

从这里,您可以添加新的文章类型或编辑您已注册的任何现有文章类型。

您可以编辑文章类型的设置,也可以将它们保留为默认设置。您可以在WordPress Codex中找到有关文章类型的所有设置和选项的完整文档。

Custom Post Type UI插件的设置

Custom Post Type UI插件的设置

您还可以使用该插件注册自定义分类并将其分配给您的新文章类型或任何现有文章类型。当您使用该插件注册文章类型时,您可以为它分配任何现有的分类法。

如何使用Pods插件注册自定义文章类型

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文件中,为您的插件添加开头注释掉的文本:

<?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”的文章类型,因为这是一个虚构的书评网站。您使用的内容显然会有所不同,并且取决于您使用自定义文章类型的目的。

在注释掉的文本下方,添加以下内容:

function wbolt_register_post_type() {
}
add_action( 'init', 'wbolt_register_post_type' );

此函数将包含您的自定义文章类型的所有代码。您可能想要更改其名称以添加您自己的前缀而不是wbolt_。最好在所有函数上使用前缀,这样您就不会与主题或正在运行的其他插件提供的任何函数的名称发生冲突。

其余代码将添加到该函数的大括号内。

为您的自定义文章类型定义标签

现在是时候为您的自定义文章类型定义标签了,在这些花括号内,添加以下内容:

$labels = array(
'name' => __( ‘Books’, ‘wbolt’ ),
'singular_name' => __( 'Book', ‘wbolt’ ),
'add_new' => __( 'New Book', ‘wbolt’ ),
'add_new_item' => __( 'Add New Book', ‘wbolt’ ),
'edit_item' => __( 'Edit Book', ‘wbolt’ ),
'new_item' => __( 'New Book', ‘wbolt’ ),
'view_item' => __( 'View Books', ‘wbolt’ ),
'search_items' => __( 'Search Books', ‘wbolt’ ),
'not_found' =>  __( 'No Books Found', ‘wbolt’ ),
'not_found_in_trash' => __( 'No Books found in Trash', ‘wbolt’ ),
);

如果您的自定义文章类型不是“book”,则需要更改您的。您可以使用更多标签,但我发现上面的标签往往足以满足我的需求。

请注意,我在标签中使用了国际化,因此它们将被翻译成用户的本地语言。

为您的自定义文章类型定义参数

下一步是定义参数,其中一个是我们已经添加的标签数组。

在标签下方且仍在这些大括号内,添加以下内容:

$args = array(
'labels' => $labels,
'has_archive' => true,
'public' => true,
'hierarchical' => false,
'supports' => array(
'title',
'editor',
'excerpt',
'custom-fields',
'thumbnail',
'page-attributes'
),
'taxonomies' => 'category',
'rewrite'   => array( 'slug' => 'book' ),
‘show_in_rest’ => true
);

让我们来看看所有这些都做了什么。

  • 标签参数是我们已经定义的标签数组。
  • 'has_archive' => true为自定义文章类型启用文章类型存档。这默认为false,所以我喜欢覆盖它并给自己选择使用文章类型存档的选项(我将很快向您展示如何使用)。
  • 'public' => true使文章类型可以包含在搜索结果和自定义查询中。同样,默认值为false,这是我喜欢覆盖的内容。
  • “hierarchical”值将取决于您希望如何使用自定义文章类型。如果将此设置为true,则文章类型的行为类似于页面,具有可能的层次结构以及您文章类型的任何文章的父文章和子文章。如果将其设置为false,它的行为就像文章一样,没有层次结构。
  • ‘supports’ 数组定义了您可以拥有此文章类型支持的文章类型的许多功能。我喜欢确保打开特色图像和自定义字段等功能。
  • ‘taxonomies’ 参数定义了适用于此文章类型的现有分类法。在这里,我使用“category”分类法。如果您想使用自定义分类法但尚未注册,只需跳过此行,然后将分类法注册到文章类型。如果您已经注册了自定义分类法,则可以使用此行将其添加到文章中。
  • 我正在使用“rewrite”参数,因为我要给分类法一个不同于我想用于它的slug的名称。我将在稍后更详细地解释这一点。
  • ‘show_in_rest’ => true确保文章类型可用于REST API和Gutenberg接口。它默认为false,这对我来说毫无意义——我希望我所有的文章类型都使用相同的编辑界面!

所以这些就是所有的论点。但是我们还没有真正注册文章类型。是时候解决这个问题了。

添加register_post_type()函数

最后一步是将所有这些整合到register_post_type()函数中。

在您的论点下方,仍在大括号内,添加以下内容:

register_post_type( ‘wbolt_book', $args );

这将使用我们已经定义的参数注册“wbolt_book”文章类型。

现在您可能会更容易理解为什么我之前使用了 ‘rewrite’ 参数。我喜欢为我的文章类型的名称添加前缀,因此我可以确保它们不会与任何第三方插件添加的任何文章类型发生冲突,但我不希望将前缀公开。

默认情况下,当WordPress显示您的文章类型的示例时,它将在 URL 中使用文章类型的名称。因此,我的名为“My Wonderful Book”的书的URL为 mysite.com/wbolt_book/my-wonderful-book。我不希望这样,所以我使用“rewrite”参数将URL更改为 mysite.com/book/my-wonderful-book。看起来好多了,是吗?

现在保存您的文件并在WordPress管理员中激活您的插件。您会发现管理菜单中出现了一种新的文章类型。

WordPress自定义文章类型:创建和使用它们的多合一指南-13

管理屏幕中的“book”文章类型

文章类型现已注册并准备好在您的网站上使用。花一些时间向其中添加一些文章(记住您的自定义文章类型的文章,而不是博客文章 – WordPress有时会让人感到困惑!)然后我们将看看如何在前面显示您的自定义文章类型的文章您网站的结尾。

如何在您的网站中显示WordPress自定义文章类型

您添加到站点的大多数自定义文章类型都将像文章一样工作,这意味着它们旨在显示在存档页面中。也许您正在使用自定义分类法来显示它们,或者您可能像我一样添加了“category”分类法。

或者,如果您使用了像WooCommerce这样的插件来添加自定义文章类型以向您的网站添加特定功能,那么该插件可能会添加一些特定页面(如“Shop2页面”)以输出您的自定义文章类型。

显示自定义文章类型的四个选项是:

  • 显示单个文章(在我的示例中,即书)
  • 显示完整的文章类型存档,列出所有书籍。
  • 使用您为自定义文章类型注册的分类显示自定义分类存档。
  • 将自定义文章类型(例如书籍)中的文章集成到现有分类法(例如“category”)的存档中,或集成到主博客页面中。

让我们依次看看这些。

警告!如果在此过程中的任何时候您无法访问自定义文章类型的档案或单个文章,那是因为WordPress尚未为它们编写永久链接。要解决此问题,请转到“设置”>“固定链接” ,然后单击“保存更改 ”按钮。这将告诉WordPress检查任何新的文章类型并为它们创建URL。

显示文章类型存档

您拥有的第一个选项是创建自定义文章类型存档中所有文章的存档页面。

如果您在注册文章类型时将“has_archive”定义为true,WordPress将自动为您的文章类型生成一个存档页面。您可以使用定制器将此添加到导航菜单中。

将您的文章类型存档添加到菜单

打开定制器并选择菜单选项。选择您的主菜单并单击添加项目 按钮以向您的菜单添加额外的项目。

WordPress自定义文章类型:创建和使用它们的多合一指南-14

在WordPress定制器中添加菜单项

从出现的选项中选择您的文章类型,然后单击其名称右侧的向下箭头。这将显示包含您添加的每个文章的所有列表,以及一个在我的例子中称为All Books的选项。单击它,它将被添加到您的菜单中。

如果然后单击菜单中的该项目,则可以编辑标签。我不想称我的为“All Books”,而只称其为“Books”。

WordPress自定义文章类型:创建和使用它们的多合一指南-15

编辑书籍菜单项

请注意,您只能通过定制器执行此操作 – 在菜单屏幕中是不可能的。因此,请确保您使用定制器将您的自定义文章类型存档添加到您的菜单中。

自定义文章类型存档

WordPress将使用模板层次结构来识别主题中的哪个模板文件用于显示自定义文章类型存档。

WordPress自定义文章类型:创建和使用它们的多合一指南-16

WordPress模板层次结构

如果您的主题有一个archive.php文件,它将使用该文件,如果没有,它将使用index.php。

如果要编辑自定义文章类型存档的输出方式,则可以为自定义文章类型存档创建模板文件。

对于特定的自定义文章类型,您需要创建一个名为archive-$posttype.php的模板文件,其中$posttype是您的文章类型的名称。因此,对于我的书籍文章类型,我将创建一个名为archive-wbolt_book.php的文件。

创建此文件的最简单方法是在您的主题中复制archive.php文件。重命名并编辑它,以便它以您想要的方式显示您的文章类型存档。

显示单个文章

使用自定义文章类型创建的单个文章也将使用模板层次结构中找到的第一个相关模板文件显示。

您可以使用单个文章比使用存档更进一步:您不仅可以为文章类型创建模板文件(single-$posttype.php),还可以为该文章的特定文章创建文件使用该文章的slug键入 (single-$postype-slug.php)。

因此,如果我将Great Expectations 添加到我的书评网站,我可以为所有书评创建一个名为single-wbolt_book.php的文件,或者我可以为该书创建一个名为 single-wbolt_book-great-expectations.php的目标文件。如果我没有创建这些文件中的任何一个,WordPress将默认使用single.php或(如果不存在singular.php或index.php。

将自定义文章类型添加到主博客页面

默认情况下,您的主博客页面将仅包含“post”文章类型。但是,如果您还想在该页面上包含自定义文章类型,与博客文章混合怎么办?

您可以通过使用WordPress中的pre_get_posts钩子来完成此操作。

在您注册文章类型的插件中,添加以下内容:

<?php
function wbolt_books_on_blog_page() {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( ‘post_type', array( ‘post’, ‘wbolt_book’ );
}
}
add_action( 'pre_get_posts', 'wbolt_books_on_blog_page' ); ?>

这会检查我们是否在“主页”页面(即博客页面,即使那不是您网站的首页)以及主查询是否正在运行(因为您不想在一个小部件,例如)。如果是这样,它会将文章和书籍添加到查询中。

请注意,您必须在数组中包含“post”文章类型以及新的文章类型。

小结

WordPress自定义文章类型是将其从简单的博客平台提升为真正的内容管理系统的功能。它们使您可以创建复杂的定制站点,这些站点可以充当商店、参考中心、媒体站点或您需要的任何东西。

您可以通过以下三种方式之一将自定义文章类型添加到您的WordPress网站。您可以使用诸如WooCommerce之类的插件来注册与插件功能相关的自定义文章类型。您可以使用CPT UI或Pods之类的插件来添加您自己的自定义文章类型。或者您可以编写自己的插件并使用该register_post_type()函数使用代码注册文章类型。无论您使用哪种方法,您都可以从您的WordPress网站获得更多收益。

评论留言