首页 >CMS教程 >WordPress >WordPress自定义帖子类型的权威指南

WordPress自定义帖子类型的权威指南

Lisa Kudrow
Lisa Kudrow原创
2025-02-15 13:11:11514浏览

WordPress自定义帖子类型的权威指南

钥匙要点

    WordPress已演变为成熟的内容管理系统和开发平台,能够通过插件,主题和WP REST API将帖子或结构化数据分组为各种类型。 WordPress中的自定义帖子类型(CPT)是创建并注册到WordPress的新帖子类型。帖子类型的示例可能包括公司或商业网站的投资组合,推荐和产品。
  • >创建自定义帖子类型涉及使用register_post_type()函数注册邮政类型,并使用一系列参数自定义它。这些参数可以控制诸如描述性名称,公众可见性,菜单位置,图标,层次结构以及帖子类型的其他功能。
  • >有几个可用的插件,例如自定义邮政类型UI,PODS框架和自定义Post类型制造商,可以简化创建自定义邮政类型的过程,从而使其更加用户友好,并消除了编码的需求。 🎜>
  • >“ wordpress被称为博客软件”的日子已经一去不复返了。 通过插件和主题,组帖子或结构化数据扩展其功能的能力,以及WP REST API的到来,也将其进一步演变为完整的内容管理系统和开发平台。
  • 多年来,我已经成功地开发了许多自定义的Web应用程序,该应用程序大量利用自定义帖子类型。这些Web应用程序之一的一个示例是我的WordPress插件的主题市场,称为ProfilePress。
  • 仔细查看上面链接的主题市场,您会发现它使用了下一个 /上空分页链接的URL中明显的自定义分页系统。因此,您有可能构建一个内部的分页系统,该系统将在查询自定义帖子类型(CPT)中完美工作。
>

足够说,让我们来实现本教程的目的,即在WordPress中学习自定义帖子类型的复杂性。

>我希望解决我个人与CPT合作的许多障碍,以及您可以做的一些很酷的事情。

>

自定义帖子类型定义

post也是特定的帖子类型,但这种内容的单个项目通常称为帖子。

在内部,所有帖子类型都存储在wp_posts数据库表中,但通过称为post_type的列进行区分。

> POST类型是指在WordPress数据库帖子表中保留的各种结构化数据。

>帖子类型的示例是帖子(一组博客帖子),页面(一组页),附件(一组上传的媒体文件)和修订版(一组邮政修订版)在WordPress中。

武装着邮政类型的定义,一种创建并注册到WordPress的新帖子类型被称为自定义邮政类型。

>如果您正在构建具有WordPress的公司或商业网站,则可以创建的帖子类型的示例是投资组合,推荐和产品。

现在我们已经了解了自定义帖子类型的概念,接下来就是学习如何创建它们。

创建自定义帖子类型

>创建自定义帖子类型非常容易。首先,将帖子类型注册为register_post_type()函数,最后,在函数调用中wrap register_post_type()并将其连接到INIT ACTION,例如So:>

从上面的代码中,您可以看到register_post_type()具有第二个函数参数,该函数接受自定义自定义帖子类型的各个方面所需的许多数组参数。>
<span><span>function portfolio_cpt() {</span>
</span>
    <span>$args = array(
</span>        <span>'label'  => 'Portfolio',
</span>        <span>'public' => true,
</span>    );

    register_post_type( <span>'portfolio', $args );
</span>}

add_action( <span>'init', 'portfolio_cpt' );</span>
您现在应该看到portfolio自定义帖子类型出现在WordPress Admin仪表板中。>

>值得注意的是,在调用register_post_type()时,第二个参数是可选的。也就是说,cpt也可以如下创建:

>

WordPress自定义帖子类型的权威指南如果以这种方式创建了CPT,它将不会显示在Admin仪表板菜单中(尽管仍然可以通过Direct URL访问访问“ http://example.com/wp-admin/eedit.php?post_type = portfolio“)及其UI措辞(否则称为标签)和管理通知将与内置的邮政帖子类型相同。

>让我们介绍一些数组参数,以自定义CPT及其各自的功能。>
<span><span>function portfolio_cpt() {</span>
</span>
    register_post_type( <span>'portfolio' );
</span>}

add_action( <span>'init', 'portfolio_cpt' );</span>
标签

>您的自定义帖子类型的复数描述名称。例如,如果您要创建电影CPT,则应该是电影。

>它将默认为$ post_type的值,这是register_post_type()的第一个参数。

标签

该帖子类型的标签数组。每个字符串都是特定管理页面中显示的一些文本。

>如果您要创建供公众使用的插件,请确保可以翻译这些字符串。

  • 名称:帖子类型的名称的复数形式。
  • >
  • singular_name:帖子类型的名称的单数形式。
  • >
  • add_new:添加新帖子的菜单项。
  • >
  • add_new_item:创建新帖子时显示的标题。
  • edit_item:编辑帖子时显示的标题。
  • > new_item:在管理标题中的“收藏夹”菜单中显示。
  • view_item:在编辑后屏幕上与永久链接一起显示。
  • search_items:编辑帖子屏幕上搜索框的按钮文本。
  • not_found:在admin中未找到帖子时显示的文本。
  • not_found_in_trash:垃圾中没有帖子时要显示的文本。
>可以在此处找到标签及其描述的完整列表。

>

描述

>简短的描述性摘要,即邮政类型是什么,尽管我尚未在WordPress Admin中找到它的位置。

>公共

>根据其布尔值,除非明确定义,否则它将自动决定其他参数。如果您想对公开论点有更多的控制权,则可能会设置三个具体论点:>

show_ui:确定是否显示给管理屏幕。

>
    publicly_queryable:确定是否可以从前端执行此帖子类型的查询。
  • dubl_from_search:帖子是否应出现在搜索结果中。
  • >
  • 菜单_position
默认情况下,在管理员中的“注释”菜单项之后,添加了一种新的帖子类型。但是您必须能够将其移至选择的合适位置。

>

例如,将菜单_ position值设置为70将在用户下方添加您的菜单项。>

菜单_icon

新的帖子类型将默认为“帖子”菜单图标,但是如果您想要一个自定义图标,请将此标签设置为图标或图像文件的URL。

>您也可以将任何dashicon用作CPT图标。

说您想使用下载dashicon,将此标签设置为dashicon值,如下所示:

<span><span>function portfolio_cpt() {</span>
</span>
    <span>$args = array(
</span>        <span>'label'  => 'Portfolio',
</span>        <span>'public' => true,
</span>    );

    register_post_type( <span>'portfolio', $args );
</span>}

add_action( <span>'init', 'portfolio_cpt' );</span>

层次结构

这个论点使您可以决定是否制作CPT层次结构。默认值是错误的。设置为true以使您的CPT层次结构。

<span><span>function portfolio_cpt() {</span>
</span>
    register_post_type( <span>'portfolio' );
</span>}

add_action( <span>'init', 'portfolio_cpt' );</span>
支持

>支持参数允许您定义一系列元框和字段,这些元件和字段在编辑或创建新帖子时将出现在屏幕上。此默认为标题和编辑器。

将此参数设置为false将阻止默认(标题和编辑器)行为。>

有几个可用的选项:

  • >标题:创建帖子标题的文本输入字段。
  • 编辑器:写作内容的内容编辑器。
  • >
  • 作者:一个用于更改帖子作者的选择框。
  • 缩略图:特色图像功能。
  • >摘录:用于编写自定义摘录的文本题材。
  • >
  • 转型:能够打开反转和pingbacks的能力。
  • >
  • 自定义场:自定义字段输入字段。
  • >评论:打开/关闭评论。
  • >
  • 修订:允许您的帖子进行修订。
  • >
  • >后形式:添加邮政格式,请参阅“邮政格式”部分
  • >
  • > page-attributes:为页面显示的属性框。这对于层次结构帖子类型很重要,因此您可以选择父帖。
  • >

register_meta_box_cb

提供一个回调函数,在设置编辑表单的元框时将调用。回调函数获取一个参数$ post,其中包含当前编辑帖子的WP_POST对象。>

此功能对开发人员特别有用,可以使他们创建将显示在CPT编辑屏幕中的自定义元框。

>

<span><span>function portfolio_cpt() {</span>
</span>
    <span>$args = array(
</span>        <span>'label'  => 'Portfolio',
</span>        <span>'public' => true,
</span>    );

    register_post_type( <span>'portfolio', $args );
</span>}

add_action( <span>'init', 'portfolio_cpt' );</span>
分类法

>将与此自定义帖子类型一起使用的一系列注册分类法或post_tag。

has_archive
<span><span>function portfolio_cpt() {</span>
</span>
    register_post_type( <span>'portfolio' );
</span>}

add_action( <span>'init', 'portfolio_cpt' );</span>

>将此参数设置为true将为您的自定义帖子类型启用档案。 例如,假设您的cpt是书籍,访问http://yoursite.com/books将显示属于书籍自定义帖子类型的帖子列表。

重写

此参数允许您在查看单个帖子或存档时定义自定义帖子类型的永久链接结构。

>默认值是正确的,并将$ post_type用作slug。要防止重写,请设置为false。

>

让我们来看看一些示例,以清楚起见。

>

说您创建了一个自定义帖子类型,但希望将URL slug从

>评论

更改为

>评估>,使用以下重写参数将从http://示例更改URL 。 CPT存档。 >每当您进行WordPress URL重写时,请确保单击“设置”中的“保存更改”按钮>>永久链接以重新创建重写规则。

>
<span>'menu_icon' => get_stylesheet_directory_uri() . '/images/portfolio-icon.png',</span>
基本上,slug定义了新的URL slug,而使用_front确定是否使用前基底座预付费永久链接结构。

>在_front上仍然不清楚吗?让我们看看一个例子。

>

说您有一个固定链接结构,带有

博客

,如下图所示。

>WordPress自定义帖子类型的权威指南

>如果with_front设置为false,则单个帖子和档案库的URL变为http://example.com/blog/assessment/harry-potter/ and http://example.com/blog/assessment/但是,如果将其设置为真,则单个帖子和档案存档的URL分别为http://example.com/assessment/harry-potter/和http://example.com/assessment/。

请注意后者中博客的遗漏?这就是区别。

can_export

>使用此参数来决定是否可以通过WordPress导出工具导出属于您的自定义帖子类型的帖子。默认情况下,这将设置为true。

query_var

此参数允许您控制用于获取此类型帖子的查询变量。

如果设置为true,它将允许您通过example.com/?book=harry-potter请求书籍自定义帖子类型,其中harry-potter是书本或帖子的url slug。

如果设置为字符串而不是true(例如

出版),则可以: “ query_var”的警告>

> query_var在您的cpt注册数组中未定义,它默认为$ post_type,除非将其设置为false。

>警告。每当query_var的值作为查询字符串中添加到URL中时,它将导致404。>

>让我澄清一下。假设您的cpt query_var的价值是审核,并且一个带有键审查的键集的查询字符串已添加到您的WordPress网站的任何URL中,以以下任何形式:

>

http://example.com/?review=some-random-string

http://example.com/a-post-slug-here/?foo=bar&review = some-random-string

    这将导致404发生。
  • >我实际上以艰难的方式了解了这一点。在我遇到这个问题时,我在WordPress Core Trac中创建了一张票,以将其报告为错误。
  • >我花了数周的时间才终于在核心WordPress团队的一些成员回答我的票之前弄清楚了。
加速使用插件的自定义邮政类型设置

>现在我们已经覆盖了基础,现在是时候指出WordPress插件存储库中的许多插件,使创建自定义帖子类型非常简单。

>

>示例包括(但不限于):>

自定义帖子类型UI

pods Framework

自定义邮政类型制造商

    结论
  • 在本教程中,我们了解了哪些自定义帖子类型以及它们的创建方式。>
  • 这实际上是WordPress自定义帖子类型的系列中的第一个。在我的下一个教程中,我们将学习如何自定义各种管理员通知,如何将自定义分类法注册到帖子类型中,并在CPT屏幕上添加上下文帮助选项卡。
  • >
  • 在此之前,愉快的编码!
  • >

    > WordPress自定义帖子类型的常见问题

    >使用WordPress自定义帖子类型的好处是什么?除了标准帖子和页面之外,它们允许您为网站创建特定的内容类型。这可以包括投资组合,推荐,产品等。自定义帖子类型还提供了一种更有条理,更有效的方法来管理您的内容。它们可以通过特定的功能和字段来自定义,从而更容易以一致的方式输入和显示内容。

    >

    >如何在WordPress中创建自定义帖子类型?输入WordPress涉及在主题的函数.php文件中添加几行代码。您需要使用register_post_type()函数,该函数允许您指定自定义帖子类型的名称,标签和其他功能。请记住,通过访问永久链接设置页面创建新的自定义帖子类型之后,要刷新您的重写规则。

    我可以将自定义字段添加到我的自定义帖子类型吗?

    是的,您可以添加自定义字段对于您的自定义帖子类型。可以使用add_meta_box()函数完成此操作,该功能使您可以在邮政编辑屏幕中添加一个新的元框。然后,您可以使用此Meta框输入并显示您的自定义帖子类型的其他信息。

    >如何在网站上显示自定义帖子类型?

    >在您的网站上显示自定义帖子类型可以通过在主题中创建新的模板文件来完成。该文件应命名为单{post-type} .php,其中{post-type}是您的自定义帖子类型的名称。然后,您可以使用标准的WordPress循环显示您的自定义帖子类型的内容。

    我可以使用插件创建自定义帖子类型吗?

    >

    是的,有几个可用的插件可以简化流程创建自定义帖子类型。这些插件提供了一个用于创建和管理自定义帖子类型的用户友好界面,而无需编码。一些流行的选项包括自定义帖子类型UI,POD和工具集类型。

    >如何在我的自定义帖子类型中添加分类法? register_taxonomy()函数。此功能使您可以创建新的分类法,指定其标签,并将其与您的自定义帖子类型相关联。然后,您可以使用此分类法来对您的自定义帖子类型的内容进行分类和过滤。

    我可以使用层次结构创建自定义的帖子类型吗?这可以通过在注册自定义帖子类型时将“层次结构”参数设置为true来完成。分层自定义帖子类型可以具有父母和子女帖子,类似于页面。

    >

    >如何自定义帖子类型自定义管理界面?

    >在注册自定义帖子类型时,可以使用“支持”参数自定义帖子类型自定义admin界面。该参数允许您指定帖子编辑屏幕中的哪些功能,例如标题,编辑器,缩略图和自定义字段。

    我可以在网站的搜索结果中包含自定义帖子类型吗?

    >

    是的,您可以在网站的搜索结果中包含自定义帖子类型。这可以通过在注册自定义帖子类型时将“ dubl_from_search”参数设置为false来完成。您还可以使用插件或自定义代码来进一步自定义网站的搜索功能。

    >

    >如何删除WordPress中的自定义帖子类型?

以上是WordPress自定义帖子类型的权威指南的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn