有时候,默认的自定义文章类型字段可能不够用,你需要在一个自定义文章类型上存储额外的数据。
幸运的是,WordPress 支持一种叫做文章元数据的功能,它允许你存储关于文章的额外信息。
让我们看看如何在一篇文章或自定义文章类型上使用文章元数据。
什么是文章元数据
文章元数据是一种在 WordPress 数据库中存储文章额外信息的方式。
文章元数据以键值对的形式存储在 postmeta 表中。如果你查看 WordPress 数据库中的 postmeta 表,你会看到它有四个列:meta_id、post_id、meta_key 和 meta_value。
post_id 是元数据关联的文章的 ID。meta_key 是元数据字段的名称,meta_value 是它的值。
添加文章元数据
你可以使用 add_post_meta 函数向文章添加文章元数据。这个函数接受三个参数:文章的 ID、元数据的名称和元数据的值。
假设你想向 ID 为 1 的文章添加一个文章元数据字段,并且你想将文章撰写地点存储为 London。
你可以使用以下代码:
<?php add_post_meta( 1, 'location', 'London' ); ?>
还有其他用于处理文章元数据的函数,例如 update_post_meta、delete_post_meta 和 get_post_meta。
你可以在插件开发者手册的元数据页面中阅读更多关于这些函数以及如何在插件中使用它们的内容。
自定义字段面板
通过代码添加文章元数据是一种方式,但也可以让站点管理员通过 WordPress 管理界面添加文章元数据。
其中一种方法是使用文章类型的自定义字段面板。
要启用自定义字段面板,你首先需要确保你的自定义文章类型支持元数据。
为此,你需要添加或更新 supports 参数,以包含对 custom-fields 的支持。
然后,在编辑自定义文章类型时,点击编辑器的选项图标,选择偏好设置,点击面板,并启用自定义字段开关。
这将刷新编辑器,你会在屏幕底部看到自定义字段面板。
在这里,你可以添加一个新的自定义字段,并为其指定名称和值。
例如,如果你想添加一本书的 ISBN 号,你可以添加一个名为 isbn 的自定义字段,并将值设为 ISBN 号。
这个面板使用 add_post_meta 函数将元数据添加到文章中。
为自定义字段面板预填充字段名称
也可以使用预定义的元字段列表来填充自定义字段面板的名称字段。
为此,你需要挂钩到 postmeta_form_keys 过滤器,并添加你想要在自定义字段面板中显示的元字段名称。
postmeta_form_keys 过滤器在自定义字段面板的 HTML 渲染之前触发,并传递两个参数:一个元键数组和文章对象。
如果没有定义其他键,则会执行一个查询来获取文章任何现有元数据的键。
因此,通过更新元键数组,你可以将元字段键添加到自定义字段面板,从而使用户更容易添加正确的元数据。
以下是一个如何实现此操作的示例:
add_filter( 'postmeta_form_keys', 'add_isbn_to_custom_fields', 10, 2 );
function add_isbn_to_custom_fields( $keys, $post ) {
if ( 'book' === $post->post_type ) {
$keys[] = 'isbn';
}
return $keys;
}
你将一个回调函数注册到 postmeta_form_keys 过滤器上,并将接受的参数设置为 2,以接受过滤器中的两个参数。
然后,检查文章类型是否为 book,如果是,则将 isbn 选项添加到 $keys 数组中,然后返回该数组。
如果文章类型是 book,它就会将 isbn 元字段添加到自定义字段面板中。
如果你创建或编辑一本 book,并且启用了自定义字段面板,你会看到 isbn 字段可用于向文章添加元数据。
自定义元数据框
另一种允许站点管理员添加文章元数据的方法是使用自定义元数据框。
然而,使用自定义元数据框还需要充分理解安全开发的原则,但现在你可以在插件开发者手册的自定义元数据框页面中阅读相关内容。
你将在插件开发者学习路径中学习如何使用元数据框。