添加元数据
添加元数据很容易完成 add_post_meta()。该功能接受post_id
,Ameta_key
,Ameta_value
,一个unique
旗帜。
这meta_key
您的插件将如何将代码其他位置的元值引用。就像是mycrazymetakeyname
但是,将有效,但是与您的插件或主题相关的前缀,然后对密钥的描述更有用。wporg_featured_menu
可能是一个好人。应该注意的是一样meta_key
可以多次使用来存储元数据的变化(请参见下面的唯一标志)。
这meta_value
可以是字符串,整数或数组。如果是一个数组,则将在存储数据库之前自动将其序列化。
这unique
标志允许您声明此密钥是否应该是唯一的。A 非 唯一的密钥是帖子可以具有多种变体,例如价格。
如果你只想要 一 帖子的价格,您应该标记unique
和meta_key
只有一个值。
更新元数据
如果键已经存在并且要更新,请使用 update_post_meta()。如果您使用此功能并且密钥确实 不是 存在,然后会创建它,好像您使用了 add_post_meta()。
如同 add_post_meta(),该功能接受post_id
,Ameta_key
,和meta_value
。它也接受可选prev_value
– 如果指定,则该功能将仅更新具有此值的现有元数据条目。如果未提供,则默认功能将更新所有条目。
删除元数据
delete_post_meta() 占post_id
,Ameta_key
,并且可选meta_value
。它确实可以做名字所暗示的。
角色逃脱
元元值通过 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不会显示具有的自定义字段meta_key
从“ _”(下划线)开始,在邮政编辑屏幕上的自定义字段列表中或使用 the_meta() 模板功能。
这对于通过使用 add_meta_box() 功能。
下面的示例将添加一个独特的自定义字段meta_key
命名“ _Color”和meta_value
“红色”,但此自定义字段不会在“邮政编辑”屏幕上显示:
add_post_meta( 68, '_color', 'red', true );
隐藏的数组
另外,如果meta_value
是一个数组,即使您不前缀,它也不会在页面编辑屏幕上显示meta_key
姓名下划线。