管理帖子meta数据
添加元数据
使用add_post_meta()可以非常轻松地添加元数据。该函数接受 a post_id
、 a meta_key
、 ameta_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()类似,该函数接受 a post_id
、 ameta_key
和meta_value
。它还接受一个可选参数prev_value
- 如果指定,将导致该函数仅使用该值更新现有元数据条目。如果未提供,该函数默认更新所有条目。
删除元数据
delete_post_meta() 接受 a 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\""}
*/
隐藏的自定义字段
meta_key
如果您是插件或主题开发人员,并且计划使用自定义字段来存储参数,请务必注意,WordPress 不会在自定义字段列表中显示以“_”(下划线)开头的自定义字段。发布编辑屏幕或使用the_meta() 模板函数时。
这对于使用add_meta_box() 函数以不寻常的方式显示这些自定义字段非常有用。
下面的示例将添加一个名为meta_key
“_color”和meta_value
“red”的唯一自定义字段,但此自定义字段不会显示在帖子编辑屏幕中:
add_post_meta( 68, '_color', 'red', true );
隐藏数组
另外,如果是一个数组,即使您没有在名称前添加下划线meta_value
,它也不会显示在页面编辑屏幕上。meta_key
无评论