添加元数据
使用add_post_meta()可以很容易地添加元数据。该函数接受一个post_id
、一个meta_key
、一个meta_value
和一个unique
标志。
meta_key
是在你的插件的其他地方如何引用该元值的名称。虽然类似于mycrazymetakeyname
是可以工作,但是使用与插件或主题相关的前缀加键名的命名方式会更有用。wporg_featured_menu
可能是个不错的选择。应该注意的是,可以多次使用相同的meta_key
来存储差异的元数据(请参见下面的唯一标志)。
meta_value
可以是字符串、整数或数组。如果它是一个数组,它将在存储到数据库中之前自动序列化。
unique
标志允许您声明该键是否应该是唯一的。一个非唯一键是指一篇文章可以有多种差异的数据,比如价格。
如果您只想要一篇文章只有一个价格,您应该将其标记为unique
,meta_key
将只有一个值。
更新元数据
如果一个键已经存在并且您想更新它,请使用update_post_meta()。如果您使用这个函数,并且键不存在,那么它将创建它,就像您使用add_post_meta()。
与add_post_meta()类似,该函数接受post_id
、meta_key
、meta_value
和unique
标志。
删除元数据
delete_post_meta()接收一个post_id
,一个meta_key
,以及可选的meta_value
。顾名思义其功能就是删除指定的元数据。
字符转义
文章meta值在存储时通过stripslashes()函数传递,因此在传递可能包含\转义字符的值(如JSON)时需要小心。
考虑一下JSON值{"key":"value with \"escaped quotes\""}
:
$escaped_json = '{"key":"value with \"escaped quotes\""}'; update_post_meta( $id, 'escaped_json', $escaped_json ); $broken = get_post_meta( $id, 'escaped_json', true ); /* $broken, after stripslashes(), ends up unparsable: {"key":"value with "escaped quotes""} */
解决方法
通过使用函数wp_slash()(在WP 3.6中引入)再添加一层\转义,可以抵消对stripslashes()的调用:
$escaped_json = '{"key":"value with \"escaped quotes\""}'; update_post_meta( $id, 'double_escaped_json', wp_slash( $escaped_json ) ); $fixed = get_post_meta( $id, 'double_escaped_json', true ); /* $fixed, after stripslashes(), ends up as desired: {"key":"value with \"escaped quotes\""} */
隐藏自定义字段
如果您是插件或主题开发人员,并且计划使用自定义字段存储参数,那么需要注意的是,WordPress不会在文章编辑界面的自定义字段列表中或使用the_meta()模板函数时显示以“_”(下划线)开头的meta_key
自定义字段。
为了通过使用add_meta_box()函数以不寻常的方式显示这些自定义字段,这可能很有用。
下面的示例将添加一个唯一的自定义字段,其meta_key
名称‘_color’和meta_value
为“red”,但此自定义字段不会显示在文章编辑界面中:
add_post_meta( 68, '_color', 'red', true );
隐藏数组
此外,如果meta_value
是一个数组,它将不会显示在页面编辑界面上,即使您没有在meta_key
名称前加下划线。