如何在 WordPress 中实现自定义帖子类型和自定义字段

已发表: 2014-06-10

WordPress 不再仅限于写博客——它是一个功能齐全的内容管理系统,能够显示和格式化您提供的任何类型的内容。 因此,让我们谈谈扩展 WordPress 的两种好方法:自定义帖子类型和自定义字段。

自定义帖子类型

看起来我们的测试站点 Monday Morning Mug(我们在电子邮件集成博客文章中使用过)有一个新问题需要处理。 我们的博客变得如此庞大,以至于我们聘请了一名全职的咖啡评论员。 他们一直在忙着煮咖啡和写评论。 他们一直在博客上发布这些评论,但我们的读者告诉我们,所有这些评论都妨碍了我们“真实”的博客内容。 我们需要为我们的咖啡评论创建一个单独的地方,但普通的 WordPress 页面不会削减它。 评论者还一直建议他们希望有一个地方可以在网站上轻松存储信息,例如咖啡来自的国家和品尝笔记。 这听起来像是自定义帖子类型的完美用途,这是一种 WordPress 功能,允许我们在我们的网站上创建新的内容部分。

自定义帖子类型非常灵活,可以针对任何类型的内容实施:引号、视频和不同色调的油漆都是自定义帖子类型的示例。

我们将要在/coffees/子目录中添加我们网站的一个新部分,该部分充满了咖啡评论。 这将需要一些代码争论,但它应该是一个相对简单的过程。

注意:为此,您需要能够编辑 WordPress 安装目录中的 .php 文件,这通常需要 FTP/SFTP/SSH 访问权限。 在继续之前确保你有这个。

每个 WordPress 主题都可以使用 functions.php 文件,该文件位于:
/wp-content/themes/your_current_theme/functions.php
该文件通常用于特定主题的站点更改以及较小的自定义站点修改,例如我们即将进行的修改。

注意:我们将向functions.php文件添加代码,这意味着它是特定于主题的。 如果您将此添加到您的 functions.php 文件,然后更改 WordPress 安装的主题,您将从您的网站中删除自定义帖子类型。 您可以通过使用插件来维护自定义内容类型,例如自定义帖子类型 UI。

1.打开你的 functions.php 文件并在文件底部添加以下代码:

function create_new_post_type() {
$labels = array(
'name' 			 => __('Coffee Reviews'),
'singular_name'  => __('Coffee Review'),
);
$args = array(
'labels'      	 => $labels,
'public' 	  	 => true,
'has_archive' 	 => true,
'menu_position'  => 5,
'description'    => 'Reviews And Types of Coffee',
'rewrite'     	 =>
array('slug' => 'reviews'),
'supports'    	 =>
array( 'title',
'comments', 'editor',
'thumbnail', 'custom-fields', 'revisions'),
);

register_post_type('Reviews', $args);
}
add_action('init', 'create_new_post_type');

因为我们不特别喜欢在不知道代码的作用的情况下使用代码,所以让我们来看看这段代码的作用。

注意:您可能已经注意到$labels$args是在register_post_type()函数之外定义的,即使它们稍后只是作为参数传递给该函数。 此方法有助于组织和可读性,但您可以将两个数组压缩为一个参数。 只会更难理解。

$args数组包含我们定义新内容类型所需的所有细节。 以下是它们的作用:

  • 'labels' - 一个数组,定义我们将称之为内容类型的内容。 您可以使用更多标签,完整列表可在此处的文档中找到。
  • 'public' - 一个布尔值,用于定义帖子是否可以在管理面板之外查看。
  • 'has_archive' - 如果为真,此布尔值将创建此类自定义帖子的存档,就像标准 WordPress 帖子一样。
  • 'menu_position' - 这个整数会改变你的自定义帖子导航按钮的位置。 数字 5 表示它将直接位于帖子选项卡的下方。 有关数字代码的完整列表,请查看相同的文档。
  • 'description' - 描述帖子类型。
  • 'rewrite' - 这将 slug 更改为“reviews”,这将有助于创建可用的永久链接结构。 (也可以是布尔值;查看文档以获取更多信息。)
  • 'supports' - 定义启用了哪些原生 WordPress 编辑/发布功能的数组。 这个非常灵活,有更多的选择,但我们至少需要custom-fieldseditor来完成这篇文章。

接下来调用register_post_type()函数,它使用我们刚刚定义的参数数组创建一个名为评论的新帖子类型。

最后,我们必须调用最后一个函数来完成该过程。 register_post_type()应始终由操作“init”初始化。 我们可以通过调用将我们的新函数挂钩到 init

add_action(‘init’, ‘create_new_post_type’);

惊人的! 现在,如果我们登录 WordPress 管理面板,我们应该会在左侧看到一个名为“评论”的新选项卡。

咖啡评论

2.现在我们将评论设置为自定义帖子类型,我们需要更新永久链接结构,以便我们的读者可以轻松找到我们的帖子。 此外,它使我们的 URL 更易于阅读和 SEO 友好。

3.在 Settings -> Permalinks 菜单栏下,您会发现一些用于永久链接结构的常用选项。 我们将更改自定义设置以匹配字段/%category%/%postname%/

这意味着 WordPress 将生成与我们帖子的类别和标题相匹配的 URL。

注意:这是一个站点范围的更改,将影响您在其他类别中的帖子。

custom_permalink

现在让我们看一下我们的评论者为 Sumatra Ketiara 咖啡写的帖子的 URL:

苏门答腊永久链接

极好的! 看看那个网址。 我们将评论分开到他们自己的目录中,并且 URL 是用简单的英语编写的。 现在我们的读者确切地知道当他们点击一个链接时会得到什么。

自定义字段

尽管我们的评论者喜欢新的评论部分,但他们确实要求我们在后端加入一些东西,以便他们输入他们写的关于每种咖啡的常见信息,例如原产国和品尝说明。 这听起来像是自定义字段的完美使用,幸运的是,它很容易实现。

1.在个人评论编辑器上,您会在编辑器右上角看到屏幕选项按钮:

screen_options

单击时扩展为:

screen_options_dropdown

2.选中自定义字段框。

在编辑器下方,您将看到我们刚刚启用的自定义字段框。

custom_fields_blank

3.你可以在两个框中输入任何内容; 您在名称字段中键入和添加的任何内容都将被保存以供以后使用。 在这里,我们列出了我们的咖啡来自的地区和国家。

custom_fields_region

自定义字段可以非常容易地在单独的位置对每个帖子中的某个类别重要的数据进行标准化。 现在我们只需要将这些信息显示在我们的评论中。

4.我们将把这个代码标签添加到我们的一个主题文档中:

<br /><?php the_meta(); ?><br />

注意:在这个例子中,我们将把这个标签放在我们的 content.php 文件中,但是你需要为你的值表找到一个合适的位置。 您还应该设置此标签的样式以匹配主题的其余部分,您可以在此处阅读更多信息。

回到我们的博客,我们可以看到我们的标签已经在我们的评论中插入了一个列表。

custom_field_example

时髦! 现在我们的读者和审稿人都很高兴。 我们能够构建一个自定义帖子类型,使我们能够保存关于咖啡的评论,并且我们能够为我们的评论者提供一个地方来存储他们对于每条不同评论的所有重要信息。