WordPress 自定义字段入门
已发表: 2021-01-19WordPress 自定义字段是一个经常被忽视的非常棒的功能。 它们允许您将“元数据”添加到在所有页面或帖子中重复的页面或帖子区域。 如果您有一个想要在多个页面上发布相同类型信息的网站,这可以为您节省大量时间。
例如,查看 WordPress 网站上的常规博客文章。 奇怪的是,在页面的某处,您会看到作者姓名和显示文章发表时间的日期。 这是元数据,将出现在您网站上的每个帖子上。
那么,如何将自己的元数据添加到帖子或页面中? 简单……使用 WordPress 自定义字段!
当然,您可以通过页面/帖子编辑器在每个帖子中手动添加此信息,但这既耗时又通常需要仔细格式化,以确保所有帖子看起来都相同。 如果您要发布大量内容,每次都必须这样做会很烦人。
当涉及到出现在页面或帖子上的核心内容时,WordPress 页面和帖子编辑器提供了很多开箱即用的功能和灵活性。 但是,您是否知道 WordPress 还为用户提供了一种添加位于主帖子或页面内容“外部”的内容的方法? 在本文中,我们将快速了解如何使用 WordPress 自定义字段,这将帮助您更好地组织您的帖子,并以美观的格式为您的读者添加有用的信息。
让我们开始吧!
什么是自定义字段和元数据?
帖子、页面、用户、评论和自定义帖子类型等内容包括以键/值对形式存储在数据库中 postmeta 表下的元数据。
您通常在帖子或页面标题下看到的信息,例如管理员姓名、日期或评论计数器,都包含在帖子的元数据中。
自定义字段是一个附加字段,您可以在其中为您的帖子添加额外信息,并且还构成帖子元数据的一部分。
自定义字段适用于页面、帖子或自定义帖子类型,并且也包含键/值对。 键是元数据元素的“名称”,值是与键关联的数据,每个帖子可能不同。
在 WordPress 中,您可以使用内置的自定义字段功能添加自定义字段,或者您可以更进一步,使用自定义字段插件,这将进一步增强对自定义字段的可用控制。 我们将在本文中介绍这两个选项。
使用 WordPress 自定义字段添加自定义字段
默认情况下,内置的 WordPress 自定义字段设置是隐藏的,这解释了为什么您可能不知道此功能的存在。 要使用它,我们首先需要启用它。
如果您使用的是经典 WordPress 编辑器(即不是 Gutenberg),请打开一个新帖子并前往该帖子的顶部。 您会在右侧看到一个显示“屏幕选项”的框。 单击此按钮,将出现一个带有复选框的下拉菜单。 在此您应该看到一个显示“自定义字段”的内容。 勾选此项以启用它们。
如果您使用的是 Gutenberg,请单击帖子右上角的“三个点”图标。 将出现一个菜单,在该菜单的底部应该显示“选项”。 单击此按钮,将出现一个带有复选框的新弹出菜单。 在此列表中,您应该会看到一个显示“自定义字段”的列表。 勾选此框,然后关闭弹出菜单。
后续步骤 - 添加您的自定义字段
添加自定义字段实际上非常简单。 如上所述启用它们后,转到帖子底部,您应该会看到一个名为(您猜对了)“自定义字段”的新部分。
您将在“自定义字段”部分看到两个框,“名称”和“值”。 Name 字段有一些预先填充的默认值,这些默认值与已添加到您的 WordPress 网站的现有字段相关。 在我们的例子中,我们想要添加我们自己的新字段。 为此,请单击位于名称字段下的“输入新”文本。
在此示例中,我们希望创建一个指向外部网站的链接,该网站用作我们撰写的文章的来源。 我们将此字段称为“来源”。 单击“输入新”文本,然后在“值”部分输入“来源”,然后输入您选择的网站的网址。 这将如下所示:
下次您无需单击“输入新”文本并手动输入“来源”。 它现在将出现在值的下拉列表中。
如果您可以访问您的数据库(例如:通过 phpMyAdmin),您可以打开 postmeta 表,通过您编辑的帖子 id 过滤表,您应该会看到新的自定义字段及其值。
现在我们已经确认自定义字段已为帖子正确存储,让我们看看如何在帖子的前端显示它,我们的网站访问者将能够看到它!
显示自定义字段值
要在我们的帖子上显示我们的新自定义字段值,我们需要向我们的单个帖子模板文件添加一些代码。 通常,这可以在位于主题主文件夹中的singular.php
文件中找到。 在我们的例子中(二十二十主题)它位于/wp-content/themes/twentytwenty/template-parts/content.php
文件中。
我们将利用 WordPress 提供的核心get_post_meta
函数从数据库中检索帖子的元字段。 该函数的结构如下:
get_post_meta( $post_id, $key, $single )
唯一需要的参数是$post_id
。 $key
参数是要检索的元键, $single
参数定义是否返回单个值,如果根本没有定义$key
则无用。
如果仅声明了$post_id
,则结果将是一个包含与特定帖子相关的所有键的数组。 所以,如果你只是插入get_post_meta( $post_id )
你会得到这样的:
Array ( [field1_key] => Array ( [0] => value1 ) [field2_key] => Array ( [0] => value2 ) [field3_key] => Array ( [0] => value3 ) )
如果你使用get_post_meta( $post_id, 'filed1_key' )
你会得到类似Array ( [0] => value1 )
的东西,如果你像我们之前那样使用get_post_meta( $post_id, 'filed1_key', true )
你只会得到value1
.
此外,在某些帖子中,您可能不想定义源字段,因此我们必须在代码中包含检查该字段是否存在于帖子中。
因此,考虑到所有这些,我们需要使用的代码如下:
$source = get_post_meta( get_the_ID(), 'source', true); if( !empty( $source ) ) { echo '<h3>Source: ' . $source . '<h3>'; } ?>
我们将在帖子内容之后插入代码,这样在带有“entry-content”类的 HTML div 中,代码将如下所示:
<div class="entry-content"> <?php if ( is_search() || ! is_singular() && 'summary' === get_theme_mod( 'blog_content', 'full' ) ) { the_excerpt(); } else { the_content( __( 'Continue reading', 'twentytwenty' ) ); } $source = get_post_meta( get_the_ID(), 'source', true); if( !empty( $source ) ) { echo '<h3>Source: ' . $source . '<h3>'; } ?> </div><!-- .entry-content -->
现在让我们通过打开一个新帖子并看看这些内容将如何出现在前端来看看我们已经完成了什么。
我们提醒您,如果您在定位与您的单个帖子视图对应的模板文件时遇到困难,您可以参考 WordPress 模板层次结构图。
显然,要设置此输出的样式,还需要做一些工作。 这超出了本文的范围,但我们将在以后的文章中介绍。
使用插件添加自定义字段
高级自定义字段插件是可用的最佳插件之一,可让您快速将自定义字段添加到您的 WordPress 网站并提供对自定义字段数据的进一步控制。 使用它的构建器,您可以轻松创建自定义字段,然后可以将其添加到您的帖子、用户、分类法、媒体、评论甚至自定义选项页面。
使用 ACF 创建您的自定义字段
安装并激活 ACF 插件后,转到显示已注册字段的“自定义字段 > 字段组”。
按“添加新”按钮开始创建您的字段。 这些也可以添加到组中。
为您提供了大量选项,可以增强您的自定义字段行为。 除了包含字段标签和名称的基本配置外,您还可以定义字段的类型,定义字段是否为必填项,更改默认值,占位符文本,当然还可以选择将包含的帖子类型使用逻辑论证。
此外,还有一些可用的设置允许您更改字段的外观(非常有用)和一个复选框列表,供您定义应在相应编辑屏幕上隐藏的内容。
太棒了,对吧?
此外,在 ACF 工具菜单中,您可以导出或导入 JSON 格式的字段组,以加快处理速度(如果这些字段已在其他地方创建)。
使用高级自定义字段的工作示例
假设我们创建了一个名为“书籍”的自定义帖子类型,我们想在每个书籍帖子上添加一些自定义字段,例如流派、书籍作者和出版年份。 我们应该做的第一件事是创建字段组和包含字段,如下所示:
如您所见,并非所有字段都使用相同的类型。
- 作者字段是一个简单的文本字段,我们将填写作者的全名。
- Genre 字段是一个选择字段,必须接受多个值。 一本书可以与更多的一种流派相关。
- 需要将流派的预定义选项插入到“选项”框中,每个选项都在自己的行中。
封面字段应该是一个带有预定义选项的单值选择字段。
现在让我们去编辑一个书帖。 这些字段将很好地分组在侧栏中。
如果要更改字段组的位置,请进入相应的设置:
填写文章的字段以及一些测试内容并更新帖子。 此时,如果您访问 Book Post 的前视图,您会注意到我们的自定义字段仍然没有显示任何内容。
显示您的 ACF 自定义字段
通过使用 ACF 插件提供的友好功能,您可以轻松地在主题模板中显示自定义字段。 其中两个是:
-
get_field()
– 返回特定字段的值。 -
the_field()
– 显示特定字段的值。
这些是 ACF 插件最常用的功能。 如果您想查看插件功能的完整列表,可以访问官方文档以了解更多信息。
因此,要在帖子视图模板中输出您的自定义字段,您需要添加一些代码,就像我们在使用默认 WordPress 自定义字段时所做的一样。 然而,这次我们将使用 ACF 插件的功能。 由于我们使用的是 Twenty Twenty 主题,因此我们必须编辑twentytwenty/template-parts/
文件夹下的 content.php 文件。 在内部部分关闭之后,我们添加了以下几行:
<div class="entry-content"> <?php if( get_field( 'author' ) ) { echo '<p><b>Author:</b> ' . get_field( 'author' ) . '<p>'; } if( get_field( 'genre' ) ) { echo '<p><b>Genre:</b> ' . get_field( 'genre' ) . '<p>'; } if( get_field( 'cover' ) ) { echo '<p><b>Cover:</b> ' . get_field( 'cover' ) . '<p>'; } ?> </div>
在前视图中,我们现在可以看到自定义字段。
但是流派字段未正确显示。 那是因为它包含多个值,因此get_field
函数返回一个数组。 为了解决这个问题,我们必须将数组转换为其一系列值。 通过使用implode()
函数,这在 PHP 中很容易。
<div class="entry-content"> <?php if( get_field( 'author' ) ) { echo '<p><b>Author:</b> ' . get_field( 'author' ) . '<p>'; } if( get_field( 'genre' ) ) { echo '<p><b>Genre:</b> ' . implode( ", ", get_field( 'genre' ) ) . '<p>'; } if( get_field( 'cover' ) ) { echo '<p><b>Cover:</b> ' . get_field( 'cover' ) . '<p>'; } ?> </div>
如果您想在某些帖子中选择性地显示某些字段但不是全部,您可以使用一些 ACF 短代码来做到这一点。 为此,请打开您的帖子,然后为每个字段添加一个简码 Gutenberg 块,并输入如下简码:
[acf field="MY_CUSTOM_FIELD"/]
将 MY_CUSTOM_FIELD 替换为字段的名称,这应该可以正常工作。
正如我们所看到的,使用 Advanced Custom Fields 插件为我们提供了极大的灵活性来创建自定义字段并将它们显示在我们想要的位置。
结论
整个行业的开发人员都依赖 WordPress 中的自定义字段功能,以便为他们的网站提供更好的结构和可读性。 这是另一个出色的 WordPress 功能,它再次帮助解释了 WordPress 为何如此受欢迎。 希望本文为您提供了将您自己的自定义字段添加到您的网站所需的信息。 开发愉快!
也可以看看
WordPress 管理员列表:添加自定义过滤器
向 WordPress 菜单项添加自定义字段