Products
GG网络技术分享 2025-03-18 16:06 0
在过去的 12 个月里,我写了许多文章,重点是使用自定义字段向 WordPress 添加功能。 我们已经研究过创建自定义帖子列表模板、制作完美的旅行博客等等。
虽然像 CustomPress 和 Advanced Custom Fields 这样的插件可以轻松创建自定义帖子类型,但如果您想真正了解它们的工作原理,您需要深入了解一下。 因此,在这篇文章中,我将向您展示如何手动创建自定义字段。
让我们陷入困境。
对我来说,自定义字段功能是 CMS 系统的基础。 自定义帖子和分类法都很棒,但是如果您想构建博客类型系统以外的东西,您需要能够将数据绑定到您的帖子。
在 WordPress 中执行此操作的两种主要方法是自定义字段和自定义元框。 在我们研究如何使用它们之前,我认为了解底层机制很重要:发布元数据。
帖子元数据 - 或帖子元 - 是一个描述附加到帖子的任何类型数据的术语。 每条数据都存储在 wp_postmeta
table,它有四列:ID、post_id、meta_key 和 meta_value。
上面的截图来自 phpMyAdmin,它显示了原始数据库数据。 显示的两行都附加到 post_id 3974。第一行由 WordPress 添加以指示最后编辑帖子的人。 SEO 插件使用第二个值来保存 SEO 标题。
WordPress 在内部使用 post meta 来做很多事情。 您已经看到了最后一个编辑器是如何保存的。 另一个突出的例子是保存帖子的特色图片。 当 post 3974 收到一张特色图片时,会创建一个新的 post 元行,其元键为 _thumbnail_id
. 元值包含分配图像的 ID。
自定义字段和元框都是允许您将数据输入 WordPress 的用户界面元素。 自定义字段部分由 WordPress 提供,并直接与上述帖子元功能挂钩。
当您输入名称和值时,您将直接在 postmeta
桌子。
另一方面,元框本质上是 WordPress 内置的 UI 助手。 它们为您提供了一种将输入机制添加到发布编辑页面的简单方法。 您可以选择将它们连接到发布元功能,但您 能够 也可以将它们用于其他事情。 我们最近在“在 WordPress 中创建自定义帖子元框”中对此进行了介绍,因此我们将在此仅关注元数据。
操作元数据的一种非常用户友好的方式是通过管理员中的自定义字段用户界面。 作为开发人员,我们需要使用代码来添加数据,因为我们的插件或主题需要能够添加/修改/删除这些信息。
幸运的是,这很简单。 我们只需要三个函数: get_post_meta()
, add_post_meta()
和 update_post_meta()
.
让我们从获取一些要使用的数据开始。
这 get_post_meta()
该函数接受三个参数:帖子的 ID、键以及我们是获取单个值还是多个值。 前两个应该很清楚,但第三个可能会令人困惑。
还记得一行元数据如何包含一个键和一个值吗? 没有什么可以阻止您使用相同的键添加多行。 起初这似乎是不好的做法,但实际上可能非常有用。
假设您正在创建一个食谱博客,并且您希望将成分存储为 post meta。 你可以使用 ingredient_1
, ingredient_2
等等元键,但这很快就变得令人厌烦。
你应该做的是使用 ingredient
在每种情况下。 这将在数据库中产生类似的结果:
如果你会使用 true
作为第三个参数 get_post_meta()
函数只会检索这些行之一。 如果你使用 false
所有行都将作为数组返回。 有用!
要添加帖子元使用 add_post_meta()
具有三个必需参数和一个可选参数。 第一个参数是post ID,第二个是meta key,第三个是meta value。
最后一个 - 可选 - 参数要求您指定此元数据是否唯一。 如果您使用 false(或省略参数),则将添加元数据,即使已存在具有相同密钥的元数据。 如果设置为 true,则如果已存在具有相同名称的键,则不会添加数据。
更新帖子元与添加它非常相似。 实际上,您可以使用 update_post_meta()
添加数据的功能。 如果它不存在,它将被创建,就像使用过一样 add_post_meta()
.
该函数采用三个必需参数和一个可选参数。 像往常一样,需要的三个是 post ID、meta key 和 meta value。 第四个参数定义了如何处理存在具有相同元键的多个值的情况。
如果省略此参数 全部 具有相同元键的行将使用新值更新。 如果您使用第四个参数,您可以指定以前的值。 这只会更新值与您指定的值匹配的行。
这就是关于 post meta 的全部内容! 您现在可以保存值并在以后使用它们。 在您将所有这些知识付诸实践之前,让我总结一下四个有用的技巧。
我相信你已经注意到,在我们从数据库获取的第一个屏幕截图中,元键以下划线开头。 这在 WordPress 中具有特殊含义:它表示不应在自定义字段用户界面中显示的元数据。
您通常添加的任何元数据(就像我们对成分所做的那样)实际上都会显示出来。 如果您认为用户不应该直接编辑数据,只需在其前面加上下划线,它将从视图中隐藏。
始终尝试使用尽可能少的元字段。 如果您的插件提供 10 个选项,请不要为每个选项创建元键。 使用一个元键并将所有选项保存为一个数组。 您可以将数组直接传递到 update_post_meta()
和 add_user_meta()
功能,WordPress 将处理其余的。
如果您有兴趣:WordPress 将数据序列化并将其保存到数据库中。 这会产生一个特殊格式的字符串,当从数据库中检索该字符串时,该字符串会被取消序列化,并返回其数组形式。
为了最大限度地减少开销,如果请求任何单个元数据,WordPress 会检索帖子的所有元数据。 这意味着您不必担心拥有 30 get_post_meta()
页面上的函数调用。 只会发出一个数据库请求,之后会缓存所有内容。
这 get_post_meta()
函数可以返回给定帖子的所有元键和值。 只需省略第二个和第三个参数,只需传递帖子 ID,您将获得数据库中该帖子的所有数据的漂亮数组。
自定义字段和元数据系统使 WordPress 成为今天的主力军。 更好的是,这种机制非常易于使用,并且可以使您的插件和主题变得更多。
练习在工作中使用这些功能来了解基础知识,您将很快从那里创建出色的应用程序。
标签:Demand feedback