管理发布元数据

添加元数据

使用可以很容易地添加元数据添加post_meta()。该函数接受帖子id,一个元键(_K),一个元值(_V)、和独特的标志。

这个元键(_K)是插件如何在代码的其他地方引用元值。有点像mycrammetakeyname(我的疯狂名称)可以,但是与插件或主题相关的前缀加上键的描述会更有用。wporg特性菜单可能是个好主意。应该注意的是元键(_K)可以多次使用来存储元数据的变体(请参阅下面的唯一标志)。

这个元值(_V)可以是字符串、整数或数组。如果它是一个数组,它将在存储到数据库之前自动序列化。

这个独特的标志允许您声明此密钥是否应该是唯一的。A类唯一键是一个帖子可以有多种变体的东西,比如价格。
如果你只想你应该标出帖子的价格独特的元键(_K)将只有一个值。

更新元数据

如果密钥已经存在并且您想更新它,请使用更新post_meta()。如果您使用此功能,并且按键不是存在,然后它将创建它,就像您使用添加post_meta().

类似添加post_meta(),函数接受帖子id,一个元键(_K)、和元值(_V)。它还接受可选上一个值(_V)–如果指定,将导致函数仅更新具有此值的现有元数据条目。如果没有提供,该函数默认更新所有条目。

删除元数据

删除post_meta()需要一个职位id,一个元键(_K)、和(可选)元值(_V)。它完全符合名字的意思。

字符转义

后元值通过条带斜线()函数,所以在传递可能包含转义字符的值(例如JSON)时需要小心。

考虑JSON值{“key”:“value with”转义引号“”}:

$escaped_json='{“key”:“value with”转义引号“”}';update_post_meta($id,'escaped_json',$escaped.json);$breaked=get_post_meta($id,'escaped_json',true);/*$breaked,在stripslashes()之后,结果无法解析:{“key”:“带“转义引号”的值”}*/

解决方法

通过使用函数再添加一级转义wp_slash()(WP 3.6中介绍),您可以补偿对条带斜线():

$escaped_json='{“key”:“value with”转义引号“”}';update_post_meta($id,'double_escaped_json',wp_slash($escaped.json));$fixed=get_post_meta($id,'double_escaped_json',true);/*$fixed,在stripslashes()之后,按要求结束:{“key”:“value with”转义引号“”}*/

隐藏的自定义字段

如果你是一个插件或主题开发人员,并且你计划使用自定义字段来存储参数,重要的是要注意WordPress不会显示具有元键(_K)在后期编辑屏幕的自定义字段列表中以“_”(下划线)开头,或者在使用meta(_)模板函数。

这对于使用添加meta_box()功能。

下面的示例将使用元键(_K)名称“_color”和元值(_V)“红色”,但此自定义字段不会显示在后期编辑屏幕中:

add_post_meta(68,'_color','red',true);

隐藏的阵列

此外,如果元值(_V)是数组,它将不会显示在页面编辑屏幕上,即使您没有为元键(_K)带有下划线的名称。