自定义文章类型数据


有时,默认的自定义文章类型字段可能还不够,而您需要在自定义文章类型中存储其他数据。

幸运的是,WordPress 支持一种称为文章元数据的功能,它允许您存储有关文章的其他信息。

让我们看看如何在文章或自定义文章类型中使用文章元数据。

什么是文章元数据

文章元数据是一种在 WordPress 数据库中存储文章其他信息的方式。

文章元数据以键值对的形式存储在 postmeta 表中。如果您查看 WordPress 数据库中的 postmeta 表,就会看到它有四列:meta_idpost_idmeta_keymeta_value

post_id 是与元数据关联的文章 ID。meta_key 是元数据字段的名称,而 meta_value 是其值。

添加文章元数据

您可以使用 add_post_meta 函数向文章添加文章元数据。此函数接受三个参数:文章 ID、元数据名称和元数据值。

假设您想向 ID 为 1 的文章添加一个文章元字段,并且想存储文章撰写地点 London

您可以使用以下代码:

    add_post_meta( 1, 'location', 'London' );

还有其他用于处理文章元数据的函数,例如 update_post_metadelete_post_metaget_post_meta

您可以在插件开发者手册的 元数据页面中进一步了解这些函数以及如何在插件中使用它们。

自定义字段面板

通过代码添加文章元数据是一种方法,但也可以让站点管理员通过 WordPress 管理界面添加文章元数据。

一种方法是使用文章类型的自定义字段面板。

要启用自定义字段面板,您首先需要确保您的自定义文章类型支持元数据。

为此,您需要添加或更新 supports 参数,以包含对 custom-fields 的支持

然后,在编辑自定义文章类型时,点击编辑器的选项图标,选择“首选项”,点击“面板”,并启用“自定义字段”切换开关。

这将刷新编辑器,您会在屏幕底部看到自定义字段面板。

在这里,您可以添加新的自定义字段,并为其指定名称和值。

例如,如果您想添加一本书的 ISBN 编号,可以添加一个新的自定义字段,名称为 isbn,值为该书的 ISBN 编号。

此面板使用 add_post_meta 函数将元数据添加到文章中。

为自定义字段面板预填充字段名称

还可以使用预定义元字段列表填充自定义字段面板的“名称”字段。

为此,您需要挂钩到 postmeta_form_keys 过滤器,并添加您想在自定义字段面板中显示的元字段名称。

postmeta_form_keys 过滤器会在渲染自定义字段面板的 HTML 之前触发,并传入两个参数:元键数组和文章对象。

如果没有定义其他键,则会运行查询,以获取该文章现有元数据的键。

因此,通过更新元键数组,您可以将元字段键添加到自定义字段面板中,从而让用户更容易添加正确的元数据。

以下是一个示例:

add_filter( 'postmeta_form_keys', 'bookstore_add_isbn_to_quick_edit', 10, 2 );
function bookstore_add_isbn_to_quick_edit( $keys, $post ) {
    if ( $post->post_type === 'book' ) {
        $keys[] = 'isbn';
    }
    return $keys;
}

您需要向 postmeta_form_keys 过滤器注册一个回调函数,并将接受的参数数量设置为 2,以接收该过滤器传递的两个参数。

然后,检查文章类型是否为书籍;如果是,则将 isbn 选项添加到 $keys 数组中,最后返回该数组。

如果文章类型是 book,它就会将 isbn 元字段添加到自定义字段面板中。

如果您创建或编辑一本书,并且启用了自定义字段面板,就会看到可用于向文章添加元数据的 isbn 字段。

自定义元框

允许站点管理员添加文章元数据的另一种方法是使用自定义元框。

不过,使用自定义元框还需要充分了解如何以安全为前提进行开发,但目前您可以在插件开发者手册的 自定义元框页面中阅读相关内容。

您将在插件开发者学习路径中了解如何使用元框。